Skip to content

PDF/A output

PDF/A is the ISO standard for archival PDF - documents that must still open identically in decades. Papyra’s PDF renderer produces PDF/A by default; it is not an add-on mode.

byte[] pdf = document.RenderAsPdf(new PdfRenderOptions { Standard = PdfStandard.PdfA3 });
Standard PDF version Use when
PdfA2 (default) PDF 1.7 General archival - the safe default
PdfA3 PDF 1.7 You need file attachments (e.g. ZUGFeRD/Factur-X e-invoices)
PdfA4 PDF 2.0 The newest revision, for workflows that require PDF 2.0
Pdf20 PDF 2.0 Plain, non-archival PDF - required for encryption, which PDF/A forbids

Pdf20 opts out of PDF/A entirely: no XMP metadata packet, output intent, or embedded ICC profile is written (fonts are still embedded, and metadata lives in the Info dictionary).

Papyra targets conformance level b (visual reproducibility) for A-2 and A-3.

  • Embeds every font used (subsetted, as Type0/CIDFontType2) - PDF/A forbids unembedded fonts
  • Embeds an sRGB ICC profile as the output intent
  • Writes an XMP metadata packet consistent with the Info dictionary
  • Avoids constructs PDF/A forbids (encryption, JavaScript, external references)

Papyra’s test suite validates real conformance against veraPDF, the industry-standard open-source PDF/A validator, for every supported standard. If you run the repository tests yourself:

Terminal window
dotnet test --filter Category=PdfA # spins up verapdf/cli via Docker