Don't Host the PDF. Publish It as a Real Drupal Page.
Convert PDF content directly into Drupal content: headings, paragraphs, lists, tables and images rebuilt as native Paragraphs and Layout Builder sections, or clean CKEditor 5 HTML. The document stays available for download. The content becomes readable by screen readers, searchable by citizens through Search API, and indexable by Google.
Remediating a PDF Makes It Compliant. Converting It Makes It Usable.
The average government website hosts 200 to 5,000 PDF documents. Tagging them is the floor, not the ceiling. A tagged PDF is still a download that opens outside your site, ignores your mobile layout, and never appears in a resident's search results. Content that matters to the public belongs on a node.
Residents search your site for "leaf collection schedule" and get nothing, because the answer is on page 14 of a PDF that Search API never indexed as content.
A fixed-width letter page forces pinch-and-zoom on the device most citizens actually use to reach you.
A changed fee means re-opening the source file, re-exporting, re-tagging, re-uploading. Most agencies just don't.
Under DOJ ADA Title II, every untagged document on your servers is exposure. And the archive grows every year.
See Exactly What You'll Get, Before You Publish
The PDF on the left. The Drupal content it becomes on the right. Every detected region is labeled, and every Paragraph is yours to accept, merge or discard before the node is created.
Interface shown for illustration. Detected regions and Paragraph mapping depend on the source document.
Every PDF Element Has a Native Home
Nothing is dumped into a raw HTML blob. Structure becomes structure: real Paragraph types, or filtered CKEditor 5 HTML that passes your text format.
| In the PDF | Drupal Paragraph | CKEditor 5 HTML |
|---|---|---|
| Document title | Heading Paragraph (h1) | <h1> |
| Section heading | Heading Paragraph (h2–h4) | <h2> … <h4> |
| Body paragraph | Text Paragraph | <p> |
| Bulleted / numbered list | Text Paragraph | <ul> / <ol> |
| Table with header row | Table Paragraph | <table> + <th scope> |
| Image, chart or logo | Media (image) + alt | <img alt=""> |
| Pull quote / callout box | Quote Paragraph | <blockquote> |
| Multi-column page | Layout Builder section | stacked <div> |
| The original file | Media (file) | <a href="…pdf"> |
Five Steps. No Copy-Paste, No Retyping.
Choose any file already referenced by a File or Media entity, drop in a new one, or point at a URL. Bulk-select a whole library.
Text, tables and images are pulled out with reading order intact. Scanned pages run through OCR first.
Each region becomes a Paragraph, Layout Builder section, or CKEditor 5 HTML. Heading levels are inferred from the document's own hierarchy.
Approve, merge or delete Paragraphs. Anything the engine isn't sure about gets flagged, not guessed. Alt text first.
Creates a draft node with your content type, a clean path alias, and the original PDF attached as a Media download.
One Conversion Fixes Four Problems at Once
Real headings, list and table semantics, and enforced alt text: the things a screen reader actually needs.
The content enters Search API and search-engine indexes as a node, with its own title and path alias.
Text reflows to any screen and works with Drupal’s translation workflow. Neither is possible inside a fixed PDF.
Next year's fee change is an inline edit by the department that owns the node, not a new export cycle.
What Converts Cleanly, and What Needs a Human
Automatic conversion handles the majority of a typical government document. The rest is flagged for review rather than silently mangled, because a wrong table header is worse than no table at all.
A Drupal module for the Drupal you already run.
PDF to Drupal Page installs with Composer on any Drupal 10.6+ or Drupal 11 site and sits alongside the PDF Accessibility Remediator. Every scanned document offers a one-click convert-to-node path from the remediation queue. No CMS migration required.
Questions agencies ask first
No. The file stays as a Media entity and is attached to the new node as a download, so records requirements and existing citations still hold.
You can create a redirect from the document path to the new node during conversion using Drupal’s Redirect module, or leave both live.
Yes. Choose Layout Builder output and multi-column source pages are rebuilt as Layout Builder sections. Prefer structured content? Choose Paragraphs. Prefer body HTML? Choose CKEditor 5.
Bulk conversion runs through Drush and creates one draft node per document. Drafts wait for a human to approve flagged items before anything publishes.
A converted node is validated against WCAG 2.1 AA before publishing. If you also keep the PDF available, that document still needs to meet accessibility requirements on its own.
Send Us Your Worst PDF. We'll Show You the Node.
There's no self-serve upload yet. Submit the form and a real person on our team converts your document by hand, then sends back the Paragraphs and the CKEditor 5 HTML so you can compare both. Most requests get a response within one business day. A 40-page scanned archive takes longer, and we'll tell you why before we start.
Request a Conversion
Send us a PDF or a link to one. We'll show you the converted page before anything publishes.
See Your Agency's PDF Risk in 2 Minutes
Enter your government website URL. We crawl every page, scan every PDF, and deliver a full ADA compliance risk report. No account. No credit card.
Run Free AuditTalk to Someone Who Speaks Government
Our team understands government procurement, ADA compliance timelines, and what it takes to migrate a government website. Free 20-minute demo. No hard sell.
- Full platform walkthrough for your agency type
- Answers to procurement and security questions
- Honest timeline and migration assessment