How to convert a pdf toward iso 19005 (pdf/a-1b) compliance
- Step 1Confirm the ISO 19005 part your policy cites — ISO 19005-1 is PDF/A-1; -2 is PDF/A-2; -3 is PDF/A-3. This tool targets 19005-1 level B (PDF/A-1b) only. If your requirement is -2 or -3, this tool cannot produce it — use a converter that supports the cited part.
- Step 2Decrypt the source — ISO 19005 forbids encryption. Remove any password with PDF Remove Password before tagging.
- Step 3Ensure fonts are embedded and transparency is flattened — These are the two clauses the tool can't fix. Re-export the source with all fonts embedded and transparency flattened, because the converter preserves embeds but adds none, and does not flatten.
- Step 4Drop the PDF into the converter — Load the file. Tagging runs in your browser — nothing is uploaded. There are no options; the tool always writes the PDF/A-1b identifier.
- Step 5Convert and download — The tool writes the XMP
pdfaididentifier, the output intent, and the PDF-1.4 header, then re-saves. Download the tagged file. - Step 6Validate with veraPDF using the PDF/A-1B profile — Run veraPDF and read the clause-level report. Expect 6.7.x (XMP identifier) to pass and 6.2.2 (ICC) plus any 6.3.x (fonts) to fail. Resolve the failing clauses at the source, then re-tag — or produce the final file with a certified converter.
ISO 19005 parts and what this tool targets
The standard has three parts; this tool covers only part 1, level B.
| ISO part | PDF/A name | Base PDF | Produced here? |
|---|---|---|---|
| ISO 19005-1 | PDF/A-1 (a / b) | PDF 1.4 | 1b only (best-effort tagging) |
| ISO 19005-2 | PDF/A-2 (a / b / u) | PDF 1.7 | No |
| ISO 19005-3 | PDF/A-3 (a / b / u) | PDF 1.7 + attachments | No |
ISO 19005-1 clauses vs. this tool
Indicative mapping of common veraPDF clause groups to what the tool handles. Clause numbers follow veraPDF's PDF/A-1B profile.
| Clause area | Requirement | Tool status |
|---|---|---|
| XMP / 6.7.x | PDF/A identifier present in XMP | Satisfied — pdfaid:part=1, conformance=B written |
| File structure / 6.1.x | No object streams; PDF 1.4 | Satisfied — saved without object streams, header forced |
| Colour / 6.2.2 | Valid ICC-based output intent | Not satisfied — DestOutputProfile is a stub |
| Fonts / 6.3.x | All fonts embedded and complete | Conditional — preserved if present, never added |
| Transparency / 6.4.x | No transparency groups | Not handled — not flattened by the tool |
| Actions / 6.6.x | No JavaScript or launch actions | Not handled — present scripts survive |
Tier limits
Applied before tagging runs.
| Tier | Max file size | Max pages |
|---|---|---|
| Free | 2 MB | 50 pages |
| Pro | 50 MB | 500 pages |
| Pro + Media | 500 MB | 2,000 pages |
| Developer | 2 GB | 10,000 pages |
| Enterprise | Unlimited | Unlimited |
Cookbook
Clause-level scenarios for people who validate. Each shows the change the tool makes and the veraPDF outcome to expect.
The identifier clause — written and passing
The XMP packet the tool writes satisfies the PDF/A-identifier clause. This is the part the tool genuinely does well.
Written XMP (excerpt): <pdfaid:part>1</pdfaid:part> <pdfaid:conformance>B</pdfaid:conformance> veraPDF: 6.7.x identifier rules → PASS
The structure clause — version forced to 1.4
ISO 19005-1 forbids PDF-1.5 object streams. The tool saves without them and rewrites the header.
save({ useObjectStreams: false })
header bytes → %PDF-1.4
veraPDF: file-structure / version rules → PASSThe colour clause — why it fails
The output intent dictionary is present, but its profile is a placeholder. A clause-level validator parses the ICC bytes and rejects them.
OutputIntent.DestOutputProfile = <stub stream, N 3>
veraPDF: 6.2.2 OutputIntent ICC profile → FAIL
Fix: embed a real sRGB IEC61966-2.1 ICC profile
(requires a certified converter).The font clause — conditional
The tool's behaviour on fonts depends entirely on the source. Two identical-looking PDFs can land on opposite sides of the clause.
Source A: fonts embedded → preserved → 6.3.x PASS
Source B: relies on system fonts → not added →
6.3.x FAIL (font program not embedded)
The tool never embeds fonts that weren't already there.A clean source that comes close
Give the tool a source that already satisfies fonts, transparency, and no-JavaScript, and the only remaining failure is the ICC clause.
Source: fonts embedded, flattened, no scripts → PDF to PDF/A → veraPDF residual failures: 6.2.2 OutputIntent ICC (stub) ← the one gap left Everything else: PASS
Edge cases and what actually happens
OutputIntent ICC profile clause (6.2.2)
failThe tool writes the output intent dictionary but references a stub profile, not a real sRGB IEC61966-2.1 ICC blob. veraPDF parses the profile bytes and fails the file on this clause. There is no in-browser fix here — embedding a valid ICC profile requires a Ghostscript- or Acrobat-grade converter.
Font not embedded (6.3.x)
failISO 19005-1 requires every font program to be embedded and complete. The tool preserves existing embeds but never adds missing ones, so a source relying on system fonts fails this clause. Re-export from the authoring application with all fonts embedded before tagging.
Transparency present (6.4.x)
failISO 19005-1 forbids transparency groups. The tool does not flatten, so any transparency in the source carries through and fails this clause. Flatten transparency at export time, or target ISO 19005-2 (which permits transparency) with a converter that supports it.
JavaScript or launch actions (6.6.x)
failISO 19005-1 forbids JavaScript and several action types. The tool does not strip actions, so a source with scripts fails this clause. Remove scripts in the source; PDF Flatten removes interactive form fields, but page/document-level JavaScript must be removed upstream.
Encrypted source
rejectISO 19005 forbids encryption. The tagger can't produce a conformant file from an encrypted source. Decrypt first with PDF Remove Password or PDF Unlock.
Requirement cites ISO 19005-2 or -3
UnsupportedThe tool writes pdfaid:part=1 only — it cannot target part 2 or 3. Do not hand-edit the identifier to claim a part the body doesn't satisfy; veraPDF validates against the declared part's full rule set. Use a converter that supports the cited part.
Level A (accessibility) required
UnsupportedLevel A (e.g. PDF/A-1a) requires a tagged structure tree and Unicode mapping. The tool produces level B only and does not add tags. For level A, use a tool that produces tagged PDF and a converter that targets the A conformance level.
veraPDF reports an XMP / metadata mismatch
failISO 19005-1 requires document-info and XMP metadata to be consistent. The tool sets Producer and modification date and writes title/creator into XMP from the document's existing values; if the source's Info dictionary disagrees in ways the validator checks, you may see a metadata-consistency failure. Normalise metadata at the source if this surfaces.
Free-tier 2 MB / 50-page cap exceeded
BlockedRegulated document sets often exceed the free-tier 2 MB / 50-page limit. Upgrade to Pro (50 MB / 500 pages) or higher, or split before tagging.
Frequently asked questions
Which ISO 19005 part and level does this tool produce?
ISO 19005-1, conformance level B — PDF/A-1b. It writes pdfaid:part=1 and pdfaid:conformance=B. It does not produce level A (accessible/tagged), nor ISO 19005-2 (PDF/A-2) or 19005-3 (PDF/A-3).
Will the output pass veraPDF?
Partially. It typically passes the XMP-identifier and file-structure clauses and fails the ICC-profile clause (the output intent uses a stub) plus any font-embedding or transparency clauses the source violates. Run veraPDF with the PDF/A-1B profile and read the clause-level report — it tells you exactly what's left to fix at the source.
Why does the ICC / output-intent clause fail?
ISO 19005-1 requires a valid ICC-based output intent. The tool writes the output intent dictionary but references a stub DestOutputProfile, not a real sRGB IEC61966-2.1 profile, so a clause-level validator rejects it. Embedding a real ICC profile requires a certified converter; this is the one clause an in-browser re-save can't satisfy.
Does it embed fonts to satisfy the font clauses?
No. It preserves fonts already embedded in the source but never adds missing ones. The font-embedding clauses therefore pass or fail entirely based on your source — re-export with all fonts embedded before tagging.
Which veraPDF profile should I use?
Use the PDF/A-1B profile, since that's what this tool targets. Don't validate against pdfa-2b or pdfa-3b — the file declares part 1, level B, and validating against another part will produce misleading results.
Can I just edit the identifier to claim PDF/A-2b or -3b?
No. The pdfaid identifier declares which part's rules the file claims to follow, and veraPDF validates the body against that part's full rule set. Editing the identifier without making the body conform produces a file that fails validation more visibly, not less. Use a converter that actually targets the part you need.
Does it strip JavaScript and flatten transparency?
No to both. ISO 19005-1 forbids JavaScript and transparency, but this tool does not remove scripts or flatten transparency. Handle those in the source — flatten transparency at export, and remove scripts (page/document-level JavaScript must be removed upstream; PDF Flatten handles interactive form fields).
Can I convert an encrypted PDF for ISO 19005 compliance?
No — ISO 19005 forbids encryption. Decrypt first with PDF Remove Password or PDF Unlock, then tag the decrypted copy.
Is the document uploaded for validation or conversion?
No. Tagging runs entirely in your browser, and validation is something you run separately (veraPDF runs locally too). The document never leaves your device; only an anonymous usage counter is recorded when you're signed in.
What's the most reliable workflow for a strict ISO 19005-1 requirement?
Fix everything you can in the source — embed all fonts, flatten transparency, remove JavaScript, decrypt — then either tag with this tool and accept the residual ICC failure, or run the source through a certified converter (Ghostscript with a PDF/A definition, or Acrobat's Preflight) that embeds a real ICC profile. Validate the result with veraPDF either way.
What size of file can I tag?
Free tier is 2 MB / 50 pages, Pro 50 MB / 500 pages, Pro + Media 500 MB / 2,000 pages, Developer 2 GB / 10,000 pages, Enterprise unlimited.
Can I script tagging into a compliance pipeline?
Yes. Pair the @jadapps/runner and POST files to the local pdf-to-pdfa endpoint so regulated documents stay on your machine. Chain a local veraPDF run after it to capture the clause-level report as part of your audit trail. The browser tool itself processes one file per run.
Privacy first
All PDF processing runs locally in your browser using PDF-lib and pdf.js. No file is ever uploaded — only metadata counters are saved for signed-in dashboard stats.