Skip to content

ISO Standards

phpdftk supports every major PDF subset standard — 7 ISO specifications plus ZUGFeRD, covering 31 conformance levels. Each is validated end-to-end in CI with dedicated integration tests and external tool verification via veraPDF, Matterhorn Protocol, and JHOVE.

StandardISOPurposeLevels
PDF/A19005Long-term archival11
PDF/UA14289Universal accessibility2
PDF/X15930Print production6
PDF/VT16612Variable/transactional printing3
PDF/E24517Engineering documents1
PDF/R23504Raster image transport1
Factur-XZUGFeRDE-invoicing6
PDF/mail23053Email-safe documents1

ISO 19005 (Parts 1–4) ensures documents remain readable decades from now by eliminating external dependencies.

LevelPartPDFKey requirements
A-1a11.4Tagged, no transparency, no encryption, all fonts embedded
A-1b11.4Visual reproduction only (no tagged requirement)
A-2a/b/u21.7Transparency allowed, JPEG2000 allowed
A-3a/b/u31.7Embedded files allowed (e.g., for invoices)
A-4/4e/4f42.0Full PDF 2.0 feature set
  • All fonts must be embedded with complete glyph programs
  • No encryption permitted
  • XMP metadata with pdfaid identification required
  • OutputIntent with ICC profile required
  • Device-dependent color spaces trigger warnings
  • JavaScript, Launch, Movie, Sound actions prohibited
  • LZW compression prohibited (A-1 only)
  • Transparency prohibited (A-1 only)
  • Tagged structure required (Level A only)
use Phpdftk\Pdf\Conformance\Profile\PdfAProfile;
$writer->setConformance(PdfAProfile::A2b);

ISO 14289 ensures documents are accessible to users of assistive technologies.

LevelPartPDF
UA-111.7
UA-222.0
  • Complete tagged structure (StructTreeRoot, StructElem hierarchy)
  • Document language (/Lang) required
  • DisplayDocTitle must be true in ViewerPreferences
  • All pages with annotations must have /Tabs /S
  • Annotations must have /Contents for accessibility (Widget/Popup exempt)
  • All fonts embedded
  • XMP metadata with pdfuaid identification
use Phpdftk\Pdf\Conformance\Profile\PdfUaProfile;
$writer->setConformance(PdfUaProfile::UA1);

Dual profile — combine with PDF/A for archival + accessible:

$writer->setConformanceProfiles([PdfAProfile::A2a, PdfUaProfile::UA1]);

ISO 15930 ensures reliable color reproduction in print workflows.

LevelPartPDFTransparencyExternal refs
X-1a:200341.3ProhibitedNo
X-3:200361.3ProhibitedNo
X-471.6AllowedNo
X-5g/5pg/5n8–91.6AllowedReference XObjects
  • OutputIntent required (GTS_PDFX type)
  • TrimBox or ArtBox required on every page
  • /Trapped must be True or False (not Unknown)
  • All fonts embedded
  • No encryption
  • Transparency prohibited for X-1a and X-3
  • Reference XObject support validated for X-5
use Phpdftk\Pdf\Conformance\Profile\PdfXProfile;
$writer->setConformance(PdfXProfile::X4);

PDF/VT — Variable & Transactional Printing

Section titled “PDF/VT — Variable & Transactional Printing”

ISO 16612 (Parts 2–3) builds on PDF/X-4 for high-volume variable data printing (bills, statements, direct mail).

LevelPDFDescription
VT-12.0Single-file exchange
VT-22.0Multi-file streaming
VT-2s2.0Streamed subset

All PDF/X-4 constraints plus:

  • DPartRoot required (document part hierarchy for variable records)
  • XMP pdfvtid identification
use Phpdftk\Pdf\Conformance\Profile\PdfVtProfile;
$writer->setConformance(PdfVtProfile::VT1);

ISO 24517-1 supports 3D models, geospatial data, and interactive engineering content.

  • 3D content must use valid U3D or PRC streams with defined views
  • JavaScript and Launch actions prohibited
  • OutputIntent recommended (warning if missing)
  • All fonts embedded, no encryption
  • XMP metadata with identification
use Phpdftk\Pdf\Conformance\Profile\PdfEProfile;
$writer->setConformance(PdfEProfile::E1);

ISO 23504-1 is designed for scanned document workflows where raster content is primary.

  • Raster-only content expected (non-raster triggers warning)
  • JavaScript and Launch actions prohibited
  • Font presence triggers warning (raster docs shouldn’t need text fonts)
  • No encryption
use Phpdftk\Pdf\Conformance\Profile\PdfRProfile;
$writer->setConformance(PdfRProfile::R1);

Built on PDF/A-3b, these profiles add structured invoice data as an embedded XML file.

LevelDescription
MINIMUMMinimal machine-readable data
BASIC_WLBasic without line items
BASICStandard invoice data
EN16931EU Directive 2014/55/EU compliant
EXTENDEDRich invoice data
XRECHNUNGGerman public sector

All PDF/A-3b constraints plus:

  • XML invoice file embedded via FileSpec/EmbeddedFile (named factur-x.xml or xrechnung.xml)
  • Factur-X XMP metadata with conformance level identification
use Phpdftk\Pdf\Conformance\Profile\ZugferdProfile;
$writer->setConformance(ZugferdProfile::EN16931);

ISO 23053-2 ensures documents can be safely attached to and opened from email without triggering security concerns.

  • No encryption
  • No JavaScript or Launch actions
  • No interactive forms (AcroForm)
  • No multimedia content
  • All fonts embedded
  • Pins to PDF 2.0
use Phpdftk\Pdf\Conformance\Profile\PdfMailProfile;
$writer->setConformance(PdfMailProfile::Mail1);

Shows which rules apply to which standard families.

ConstraintAUAXVTERZUGFeRDmail
Font embeddingAllAllAllAllAllAllAll
Encryption prohibitedAllAllAllAllAllAllAll
XMP metadataAllAllAllAllAllAllAllAll
OutputIntentAllAllAllWarnAll
Color space checksAllAll
Action restrictionsAllAllAllAllAll
Tagged structureLevel AAllLevel A
TransparencyA-1 onlyX-1a/X-3A-1 only
TrimBoxAllAll
Trapped flagAllAll
DPartRootAll
3D contentRequired
Forms prohibitedAll
Multimedia prohibitedAll