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.

The pdf-conformance package validates documents against these standards at write time via PdfWriter::setConformance() or at read time via ConformanceChecker.

Key files:

StandardISOProfilesPDF VersionPurpose
PDF/A19005 (Parts 1–4)11 levels1.4–2.0Long-term archival
PDF/UA14289 (Parts 1–2)2 levels1.7–2.0Universal accessibility
PDF/X15930 (Parts 4, 6–9)6 levels1.3–1.6Print production
PDF/VT16612 (Parts 2–3)3 levels2.0Variable/transactional printing
PDF/E24517-11 level1.6Engineering documents
PDF/R23504-11 level2.0Raster image transport
Factur-XZUGFeRD/Factur-X6 levels1.7European e-invoicing
PDF/mail23053-21 level2.0Email-safe documents

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

Profile enum: PdfAProfile

CasePartConformancePDFTaggedTransparency
A1aPart 1 (ISO 19005-1)Level A1.4RequiredProhibited
A1bPart 1 (ISO 19005-1)Level B1.4Prohibited
A2aPart 2 (ISO 19005-2)Level A1.7RequiredAllowed
A2bPart 2 (ISO 19005-2)Level B1.7Allowed
A2uPart 2 (ISO 19005-2)Level U1.7Allowed
A3aPart 3 (ISO 19005-3)Level A1.7RequiredAllowed
A3bPart 3 (ISO 19005-3)Level B1.7Allowed
A3uPart 3 (ISO 19005-3)Level U1.7Allowed
A4Part 4 (ISO 19005-4)2.0Allowed
A4ePart 4 (ISO 19005-4)Level E2.0Allowed
A4fPart 4 (ISO 19005-4)Level F2.0Allowed
  • 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)
ConstraintSourceA-1A-2A-3A-4
FontEmbeddingFontEmbeddingConstraint.php
EncryptionEncryptionConstraint.php
MetadataMetadataConstraint.php
OutputIntentOutputIntentConstraint.php
ColorSpaceColorSpaceConstraint.php
ActionActionConstraint.php
EmbeddedFileEmbeddedFileConstraint.phpProhibitedProhibitedAllowedAllowed
TransparencyTransparencyConstraint.phpProhibited
FilterFilterConstraint.phpLZW prohibited
TaggedStructureTaggedStructureConstraint.phpLevel A onlyLevel A onlyLevel A only
use Phpdftk\Pdf\Conformance\Profile\PdfAProfile;
$writer->setConformance(PdfAProfile::A2b);

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

Profile enum: PdfUaProfile

CasePartPDF
UA1Part 1 (ISO 14289-1)1.7
UA2Part 2 (ISO 14289-2:2024)2.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
ConstraintSourceApplies
FontEmbeddingFontEmbeddingConstraint.phpAll
MetadataMetadataConstraint.phpAll
TaggedStructureTaggedStructureConstraint.phpAll
DisplayDocTitleDisplayDocTitleConstraint.phpAll
TabOrderTabOrderConstraint.phpAll
AnnotationAnnotationConstraint.phpAll
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.

Profile enum: PdfXProfile

CaseISO PartPDFTransparencyReference XObjects
X1a2003ISO 15930-41.3Prohibited
X32003ISO 15930-61.3Prohibited
X4ISO 15930-71.6Allowed
X5gISO 15930-81.6AllowedSupported
X5pgISO 15930-81.6AllowedSupported
X5nISO 15930-91.6AllowedSupported
  • 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
ConstraintSourceX-1a/X-3X-4X-5
FontEmbeddingFontEmbeddingConstraint.php
EncryptionEncryptionConstraint.php
MetadataMetadataConstraint.php
OutputIntentOutputIntentConstraint.php
TrimBoxTrimBoxConstraint.php
TrappedTrappedConstraint.php
TransparencyTransparencyConstraint.phpProhibited
ReferenceXObjectReferenceXObjectConstraint.php
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).

Profile enum: PdfVtProfile

CaseISO PartPDFBase
VT1ISO 16612-22.0PDF/X-4
VT2ISO 16612-22.0PDF/X-4
VT2sISO 16612-32.0PDF/X-4

All PDF/X-4 constraints plus:

  • DPartRoot required (document part hierarchy for variable records)
  • XMP pdfvtid identification

Inherits all PDF/X-4 constraints plus:

ConstraintSource
DPartRootDPartRootConstraint.php
use Phpdftk\Pdf\Conformance\Profile\PdfVtProfile;
$writer->setConformance(PdfVtProfile::VT1);

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

Profile enum: PdfEProfile

CaseISO PartPDF
E1ISO 24517-11.6
  • 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
ConstraintSource
MetadataMetadataConstraint.php
EncryptionEncryptionConstraint.php
FontEmbeddingFontEmbeddingConstraint.php
ThreeDContentThreeDContentConstraint.php
PdfEActionPdfEActionConstraint.php
PdfEColorSpacePdfEColorSpaceConstraint.php
use Phpdftk\Pdf\Conformance\Profile\PdfEProfile;
$writer->setConformance(PdfEProfile::E1);

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

Profile enum: PdfRProfile

CaseISO PartPDF
R1ISO 23504-12.0
  • 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
ConstraintSource
MetadataMetadataConstraint.php
EncryptionEncryptionConstraint.php
RasterContentRasterContentConstraint.php
PdfRActionPdfRActionConstraint.php
PdfRFontPdfRFontConstraint.php
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.

Profile enum: ZugferdProfile

CaseDescriptionBase Profile
MINIMUMMinimum invoice dataPDF/A-3b
BASIC_WLBasic without linesPDF/A-3b
BASICBasic invoicePDF/A-3b
EN16931EU norm compliantPDF/A-3b
EXTENDEDExtended dataPDF/A-3b
XRECHNUNGGerman e-invoicePDF/A-3b

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

Inherits all PDF/A-3b constraints plus:

ConstraintSource
ZugferdXmpZugferdXmpConstraint.php
ZugferdInvoiceZugferdInvoiceConstraint.php
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.

Profile enum: PdfMailProfile

CaseISO PartPDF
Mail1ISO 23053-22.0
  • No encryption
  • No JavaScript or Launch actions
  • No interactive forms (AcroForm)
  • No multimedia content
  • All fonts embedded
  • Pins to PDF 2.0
ConstraintSource
FontEmbeddingFontEmbeddingConstraint.php
EncryptionEncryptionConstraint.php
MetadataMetadataConstraint.php
ActionActionConstraint.php
FormFormConstraint.php
MultimediaMultimediaConstraint.php
use Phpdftk\Pdf\Conformance\Profile\PdfMailProfile;
$writer->setConformance(PdfMailProfile::Mail1);

Shows which constraints apply across all standard families.

ConstraintSourceAUAXX-5VTERZUGFeRDmail
FontEmbeddingFontEmbeddingConstraint.php
EncryptionEncryptionConstraint.php
MetadataMetadataConstraint.php
OutputIntentOutputIntentConstraint.php
ColorSpaceColorSpaceConstraint.php
ActionActionConstraint.php
EmbeddedFileEmbeddedFileConstraint.php
TransparencyTransparencyConstraint.phpA-1X-1a/X-3A-1
FilterFilterConstraint.phpA-1
TaggedStructureTaggedStructureConstraint.phpLevel ALevel A
DisplayDocTitleDisplayDocTitleConstraint.php
TabOrderTabOrderConstraint.php
AnnotationAnnotationConstraint.php
TrimBoxTrimBoxConstraint.php
TrappedTrappedConstraint.php
DPartRootDPartRootConstraint.php
ThreeDContentThreeDContentConstraint.php
PdfEActionPdfEActionConstraint.php
PdfEColorSpacePdfEColorSpaceConstraint.php
RasterContentRasterContentConstraint.php
PdfRActionPdfRActionConstraint.php
PdfRFontPdfRFontConstraint.php
ReferenceXObjectReferenceXObjectConstraint.php
ZugferdXmpZugferdXmpConstraint.php
ZugferdInvoiceZugferdInvoiceConstraint.php
FormFormConstraint.php
MultimediaMultimediaConstraint.php