PDF/UA-1 (ISO 14289-1) and PDF/A, verified

Accessible PDFs, generated and machine-checked

PolyDoc turns your HTML into tagged PDF/UA-1 output and can run veraPDF over the result before it reaches you. A file that fails the machine-checkable rules comes back as an error with the rules it broke, not as a document you find out about months later.

Accessibility rules reach your documents, not just your pages

The European Accessibility Act has applied to in-scope consumer services since June 2025, and the standard behind it, EN 301 549, devotes a whole clause to non-web documents. An invoice, a statement, a policy or a ticket that a service hands to its users falls under the same expectations as the page it was downloaded from.

Enforcement so far looks like pressure rather than penalties. The Dutch regulator ACM found a majority of the webshops it surveyed failing. A French court ordered Carrefour to bring its service into line within six months under a daily penalty. German businesses have been receiving BFSG warning letters. No fine under an EAA-transposing law has been confirmed publicly as of mid-2026, so the honest read is that the cost today is legal attention and remediation work, not a headline number.

Remediation is where it gets expensive. Fixing a PDF after the fact, page by page, is priced per page by the vendors who do it. Emitting the tags at generation time costs a rounding error against that, and it scales with your document volume instead of your compliance budget.

Your site can pass WCAG while your PDFs fail

WCAG is written for web content. A PDF carries its own contract, and a clean automated audit of the page that generated a document tells you nothing about the document. That document is usually the artifact the user keeps, forwards and files.

A real structure tree

Headings, paragraphs, lists and tables come through as tagged structure rather than positioned text, so a screen reader has something to navigate.

Roles Chromium does not map itself

Chromium emits PDF 2.0 types such as Strong and Em with no RoleMap. PolyDoc adds the mapping so a validator can resolve them.

List items that hold their content

A list item containing a link needs its body wrapped in LBody. Without it the list fails, which is one of the most common ways generated PDFs break.

Described links

Every link annotation gets a description, including in-page anchors that carry a destination instead of a URI.

Document-level requirements

Marked-content flag, document language, a title the viewer actually displays instead of a filename, and tab order set to follow the structure.

Two flags, one call

Tagging is switched on for you whenever you ask for PDF/UA, because the structure has to exist at render time. Setting verify turns the check into a gate.

The request

{
  "source": "https://example.com/statement/<n>2026</n>-<n>07</n>",
  "pdf": {
    "pdfua": { "verify": true },
    "pdfa": { "level": "3b", "verify": true }
  }
}

A passing file comes back as the PDF, with X-Pdfua-Compliant and X-Pdfa-Compliant on the response so you can record that the check ran.

A failing file, if you asked us to enforce

{
  "success": false,
  "message": "The PDF is not compliant with PDF/UA-<n>1</n>.",
  "error": "Unprocessable Entity",
  "code": "PDFUA_VERIFICATION_FAILED",
  "pdfua": {
    "failedRules": 1,
    "failedChecks": 3,
    "failures": [
      "content shall be marked as Artifact or tagged as real content"
    ]
  }
}

422 with the rules that broke, instead of a document that looks fine and is not. Leave verify off and you get the tagged file without the gate.

Archival and accessible in the same file

PDF/UA combines with PDF/A at any of the three levels, so one call can return a document that is both long-term archivable and tagged for assistive technology. Each half can be verified independently.

"level": "1b"

The strictest of the three. No transparency at all, which rules out a PNG with an alpha channel or any CSS opacity. Opaque images and ordinary text are fine.

"level": "2b"

Allows transparency and modern compression. A reasonable floor when you have no external reason to pick a specific level.

"level": "3b"

Everything 2b allows, plus attachments of any file type rather than just other PDF/A files. The safer default for HTML-to-PDF, and the level e-invoicing needs.

What we do not claim

Accessibility is a field where overclaiming is normal and expensive to discover. Here is where the line sits.

Validation is not compliance

Passing veraPDF's PDF/UA-1 profile proves the machine-checkable requirements, which is roughly two thirds of the standard. Whether your alt text is meaningful, your reading order makes sense and your headings describe the document is a judgement no validator makes. Under the European Accessibility Act the service provider stays the accountable party.

Some things only your HTML can fix

Content that is painted but neither tagged nor marked as an artifact fails, and it comes from three sources: images with an empty alt attribute, CSS background images, and images that fail to load. Give real images real alt text and keep decorative artwork out of documents you verify.

Non-Latin scripts are not there yet

Chromium falls back to Type3 fonts for CJK text, and no PDF/A level accepts them. If your documents are in Chinese, Japanese or Korean, the PDF/A path will not pass today.

We do not issue certificates

What you get is best-effort standards output and, if you ask for it, a machine check that either passes or refuses to hand over the file. That is evidence you can point at, not an attestation from a conformity body.

Generate one and check it yourself

The free tier covers 150 conversions a month, verification included. Point it at a document you already ship and see what the validator says.