Best HTML to PDF Converters for Accessibility and Tagged PDFs
Compare HTML-to-PDF tools for tagged output and PDF/UA-1, then learn what to check in the generated document.
Short answer: Prince is the clearest choice in the reviewed documentation when you need an HTML-to-PDF engine that explicitly supports tagged PDFs and a PDF/UA-1 output profile. DocRaptor offers a hosted API using Prince and documents how to enable that profile. Adobe Acrobat can create PDF tags when converting web pages and offers tools to inspect and repair reading order and structure. These capabilities are useful starting points, not proof that a particular generated PDF is accessible or conforms to PDF/UA-1.
Choose based on the output requirements, your source HTML, the control or hosting model you need, and how you will inspect and remediate the result. If you are evaluating a PDF screenshot or visual-rendering workflow as well, ScreenshotNeo is a website screenshot API and MCP server; it captures images and PDFs, but the documented facts here do not establish tagged-PDF or PDF/UA-1 output.
What “tagged PDF” and PDF/UA-1 mean
A tagged PDF includes a structural representation of the document, such as headings, paragraphs, lists, links, and image alternatives. That structure can help assistive technology interpret content and its reading order. Having tags does not by itself mean that the tags are correct, the order is logical, or the PDF meets an accessibility profile.
PDF/UA-1 is a declared output profile with requirements beyond simply adding tags. Prince describes requirements including logical tag order, correct semantic tags, alternative text for meaningful images, assistive-technology access, embedded fonts, and Unicode text mapping. Review the generated file itself; a converter option is not a conformance certificate. See Prince’s PDF/UA documentation.
Converter comparison
| Tool | Documented accessibility capabilities | Workflow fit | Important qualification |
|---|---|---|---|
| Prince | Tagged PDF and PDF/UA-1 output profile; tagging can be enabled through a profile or tagging option. | Teams integrating an HTML/XML-to-PDF engine and controlling output. | Profile selection does not guarantee that every source document has correct semantic structure. Inspect the result. Documentation |
| DocRaptor | Managed HTML-to-PDF API using Prince; documents PDF/UA-1 profile setup. | Developers who want a hosted API rather than operating the conversion engine. | Further adjustment may be needed, and its documentation says ARIA roles are not automatically tagged. Documentation |
| Adobe Acrobat | Web-page conversion includes a Create PDF Tags setting; Acrobat Pro can help inspect and edit reading order and structure tags. | People converting pages through Acrobat and teams that need desktop review or repair. | Adobe says accessibility depends on the source HTML and its reading order. Accessibility guidance |
| Puppeteer | Page.pdf() generates a PDF and uses print CSS media by default; screen media can be emulated. |
Developers already automating Chromium-based rendering. | The reviewed Puppeteer documentation establishes PDF rendering, not tagged-PDF or PDF/UA support. Do not select it on an assumption of those capabilities. API documentation |
This is a comparison of documented capabilities, not a speed, price, or output-quality benchmark. Verify current versions and licensing against your project before selecting a tool.
How to choose
- Write down the actual requirement. Is tagged structure enough, or does the project require a declared PDF/UA-1 profile? Identify any procurement or regulatory requirement separately.
- Check the implementation model. Prince is an engine you can integrate; DocRaptor provides a managed API using Prince; Acrobat is a desktop conversion and review workflow; Puppeteer fits Chromium automation when PDF/UA support is not being assumed.
- Check the source document. Use semantic elements in a logical order, declare the document language, and supply meaningful alternative text for informative images.
- Check mapping limits. If you rely on ARIA roles or custom semantics, verify how the converter maps them. DocRaptor explicitly notes that ARIA roles are not automatically tagged.
- Plan review and remediation. Inspect tags, order, links, images, and text in the actual output, then test relevant assistive-technology access. Decide who will fix problems and regenerate the PDF.
Prepare accessible source HTML
Conversion cannot reliably infer the meaning your markup leaves ambiguous. Start with a logical document outline, meaningful labels, and a reading order that makes sense without visual positioning. Adobe’s guidance puts the source first: “A PDF that you create from a web page is only as accessible as the HTML source that it is based on.” Read Adobe’s accessible PDF guidance.
- Use headings in a meaningful hierarchy and native elements such as lists, tables, and links for their intended purposes.
- Set the page language in HTML, for example
<html lang="en">. - Provide useful alternative text for meaningful images; mark decorative images appropriately in the source.
- Keep content order logical in the DOM. Do not rely on CSS placement alone to create the reading sequence.
- Use descriptive link text and ensure important information is available as text rather than only through appearance.
- Check long pages, repeated headers, tables, and generated content separately; these can expose ordering or structure issues after conversion.
Generate tagged output with Prince
Prince documents both tagged output and a PDF/UA-1 profile. Its profile can be selected for PDF/UA-1 output; the tagging option is another documented mechanism. Consult the Prince PDF/UA documentation for the current command-line and configuration details for the version you deploy. Do not treat a successful command or profile setting as proof of conformance.
A practical workflow is:
- Make the HTML semantic and declare its language.
- Configure Prince for the required tagged or PDF/UA-1 output profile using the syntax documented for your installed version.
- Generate the PDF and retain the source HTML, stylesheets, assets, and converter configuration needed to reproduce it.
- Inspect the output tag tree and reading order, including headings, lists, tables, links, and meaningful-image alternatives.
- Run appropriate accessibility checks and review with assistive technology where required; correct source or output issues and regenerate.
Generate tagged output with DocRaptor
DocRaptor’s instructions say to set prince_options[profile] to PDF/UA-1 to create a tagged document. The exact request syntax depends on the API client or HTTP integration you use; use the current DocRaptor accessible PDF documentation for a runnable request in your chosen client.
Also follow its documented qualifications: more adjustment can be required, and ARIA roles are not automatically tagged. Check language, semantic structure, and the resulting tag tree, then validate the produced file. A hosted conversion endpoint changes where rendering runs; it does not remove the need to check the output.
Convert a web page with Adobe Acrobat
Acrobat’s web-page conversion settings include Create PDF Tags, which is intended to preserve HTML structure in the PDF. Acrobat Pro can help inspect and edit reading order and document structure tags. The precise dialogs can vary by product version, so follow the current Adobe instructions.
- Convert the web page using Acrobat’s web-page conversion workflow.
- Enable Create PDF Tags in the conversion settings.
- Open the resulting PDF and inspect its tags, reading order, and accessibility issues.
- Use Acrobat Pro’s reading-order and structure tools to repair issues where appropriate, then review the repaired document.
Adobe cautions that the result depends on source HTML. A conversion setting cannot repair a confusing source reading order automatically in every case.
Use Puppeteer when Chromium rendering is the requirement
Puppeteer’s Page.pdf() method renders a page to PDF, with print CSS media active by default. The official API documents emulating screen media when that is desired. It does not establish tagged-PDF or PDF/UA output, so treat Puppeteer as a rendering route only when those output guarantees are not required or are independently handled in a later workflow. See Puppeteer’s Page.pdf API.
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch({ headless: true });
try {
const page = await browser.newPage();
await page.goto('https://example.com', { waitUntil: 'networkidle0' });
await page.pdf({
path: 'page.pdf',
format: 'A4',
printBackground: true,
preferCSSPageSize: true
});
} finally {
await browser.close();
}
Save the file and inspect it. The code above demonstrates Chromium PDF rendering; it does not claim tagged or PDF/UA-1 output.
Validate the PDF after conversion
- Inspect structure. Confirm that the tag tree represents headings, paragraphs, lists, tables, and links appropriately.
- Check reading order. Follow the content in sequence, including multi-column layouts, headers, footers, and tables.
- Review images. Check that meaningful images have useful alternatives and decorative images do not interrupt reading.
- Review language and text. Check document language, text extraction, and Unicode mapping.
- Check links and navigation. Confirm link targets and labels are understandable and that document navigation behaves as expected.
- Run an accessibility check. Use an appropriate checker and, when the requirement calls for it, inspect with assistive technology. A machine check is evidence of checks performed, not proof of every user experience.
- Repair and repeat. Fix source markup when possible, regenerate, and recheck the actual delivered file.
Acrobat documents accessibility checking and Pro tools for editing reading order and structure tags in its accessible PDF guidance.
Or skip the browser setup
For website screenshots or a PDF capture, ScreenshotNeo provides a one-request API and an MCP server. It is a useful alternative to try first when the job is capturing a page, though the available product facts do not claim that its PDF output is tagged or PDF/UA-1.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
See the ScreenshotNeo API documentation for request options. Cookie banners are accepted like a visitor and 60+ known consent platforms, newsletter popups, and chat widgets are removed before the shot; each cleanup step can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits cost nothing, and response headers report the page verdict and billing status. An MCP server offers take_screenshot, get_page_info, and capture_pdf tools for AI agents. The free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000 shots. Every feature is on every plan.
Sign up for ScreenshotNeo’s free 1,000 screenshots a month, with no card required.
Common problems and fixes
| Symptom | Likely cause | What to do |
|---|---|---|
| The PDF has no useful tags. | Tagging was not enabled, or the selected workflow does not document tagged output. | Use a documented tagged-output mode such as Prince tagging/PDF-UA profile, DocRaptor’s documented profile setting, or Acrobat’s Create PDF Tags option. Inspect the generated tag tree. |
| The PDF has tags, but the order is confusing. | Source DOM order or layout makes the logical sequence unclear. | Correct the HTML reading order first, regenerate, and inspect the tag order. Use Acrobat Pro’s documented tools for reading-order repair when appropriate. |
| ARIA roles do not appear as expected. | ARIA roles may not map automatically in the conversion workflow; DocRaptor explicitly calls this out. | Review DocRaptor’s guidance, prefer well-supported semantic HTML where possible, and inspect or adjust the resulting tags. |
| The PDF/UA setting is enabled but the file still has accessibility defects. | A profile choice cannot make ambiguous source content meaningful or guarantee all requirements are met. | Check semantics, image alternatives, language, fonts, Unicode text mapping, and tag order; remediate and validate the output. |
| The PDF layout differs from the browser page. | Print styles and page sizing affect rendered output; Puppeteer uses print media by default. | Review print CSS and page-size behavior. If screen styling is intended in Puppeteer, consult its API for screen-media emulation. |
| A checker passes, but a reader still encounters barriers. | Automated checks cannot establish the full experience in every context. | Manually inspect the structure and reading sequence and use assistive technology when required. |
Performance, reliability, and cost considerations
The reviewed sources do not provide a controlled benchmark for conversion speed, output quality, or comparative price, so this guide does not rank tools on those measures. For a reliable workflow, make input assets available to the converter, set an explicit timeout appropriate to the page, retain reproducible source and configuration, and handle failed conversions as errors rather than delivering an unreviewed file. For hosted or desktop products, check current pricing, limits, and licensing directly with the vendor before rollout.
Conversion time and output size can be affected by page complexity, remote assets, fonts, and print styles. Reduce unnecessary dependencies where possible, and test representative long pages and complex tables. For accessibility-critical output, budget time for inspection and remediation; selecting a profile is only one step.
FAQ
Does converting HTML to PDF make the result accessible automatically?
No. Semantic source HTML and correct reading order matter, and the generated tags must be inspected. Adobe explicitly says accessibility depends on the source page.
Which option explicitly documents PDF/UA-1?
Prince documents a PDF/UA-1 profile, and DocRaptor documents how to select that profile in its managed service. Confirm the current product documentation and validate the resulting PDF.
Can Puppeteer create a PDF/UA file?
The reviewed Puppeteer documentation establishes PDF rendering, not tagged-PDF or PDF/UA-1 support. Do not infer conformance from its PDF generation method.
Is a tagged PDF the same thing as a conforming PDF/UA-1 file?
No. Tags need to represent document semantics and order correctly, and other profile requirements also matter.
Can a screenshot API replace an accessible PDF converter?
Not on the evidence here. ScreenshotNeo captures screenshots and PDFs, but its supplied product facts do not establish tagged output or PDF/UA-1 conformance.
