Skip to content

Spec Coverage

Tracks implementation status of ISO 32000-2:2020 (PDF 2.0) objects against phpdftk/phpdftk.

Legend: ✓ Implemented · ~ Partial · ✗ Missing


Source: packages/pdf/core/src/Document/Catalog.php

FieldStatusNotes
/Pages
/Version
/OutlinesOutline + OutlineItem classes implemented
/NamesReference stored; NameTree class available
/DestsRef stored; Destination class available
/ViewerPreferences
/PageLayout
/PageMode
/OpenAction
/AcroForm
/MetadataReference stored; XMP stream via phpdftk/xmp
/MarkInfoMarkInfo class on Catalog::$markInfo
/Lang
/AAReference stored
/URIInline dict
/SpiderInfoReference stored
/OutputIntentsArray of OutputIntent refs
/PieceInfoInline dict
/OCPropertiesReference stored
/PermsInline dict
/LegalInline dict
/RequirementsArray stored
/CollectionReference stored
/NeedsRendering
/DSSDSS class + DssBuilder + LtvSigner for PAdES LTV — certs, OCSPs, CRLs, VRI entries
/ExtensionsDeveloper extensions dict
/AFAssociated files array
/DPartRootDPartRoot reference (PDF 2.0)

Source: packages/pdf/core/src/Document/PageTree.php

FieldStatusNotes
/Type
/Parent
/Kids
/Count
/MediaBox
/Resources
/Rotate
/CropBoxInheritable box
/BleedBoxInheritable box
/TrimBoxInheritable box
/ArtBoxInheritable box
/BoxColorInfoInline dict
/GroupReference stored
/ThumbReference stored
/BArticle bead refs
/Dur
/TransTransitionDict or Serializable
/AnnotsInheritable annotations
/AAReference stored
/MetadataXMP stream reference
/PieceInfoInline dict
/StructParents
/ID
/PZ
/SeparationInfoInline dict
/Tabs
/TemplateInstantiated
/PresStepsReference stored
/UserUnit
/VPViewport array

Source: packages/pdf/core/src/Document/Page.php

FieldStatusNotes
/Type
/Parent
/Resources
/MediaBox
/CropBox
/BleedBox
/TrimBox
/ArtBox
/Contents
/Rotate
/Annots
/GroupReference stored
/ThumbReference stored
/UserUnit
/StructParents
/TransTransitionDict class; S, D, Dm, M, Di, SS, B
/Dur
/BoxColorInfoTyped BoxColorInfo + BoxStyle (§14.11.2)
/BArticle beads
/AFAssociated files
/OutputIntentsPage-level output intents
/DPartDocument part reference (PDF 2.0)
/AAReference stored
/MetadataXMP stream reference on page
/PieceInfoReference stored
/ID
/PZ
/SeparationInfoInline dict
/Tabs
/TemplateInstantiated
/PresStepsReference stored
/VPViewport array

Source: packages/pdf/core/src/Document/Info.php

FieldStatusNotes
/Title
/Author
/Subject
/Keywords
/Creator
/Producer
/CreationDate
/ModDate
/Trapped

Source: packages/pdf/core/src/Document/ViewerPreferences.php

FieldStatusNotes
/HideToolbar
/HideMenubar
/HideWindowUI
/FitWindow
/CenterWindow
/DisplayDocTitle
/NonFullScreenPageMode
/Direction
/ViewArea
/ViewClip
/PrintArea
/PrintClip
/PrintScaling
/Duplex
/PickTrayByPDFSize
/PrintPageRange
/NumCopies
ObjectStatusNotes
Outline (/Type /Outlines)First, Last, Count; PdfWriter::setOutline() wires to Catalog
OutlineItemTitle, Parent, Prev, Next, First, Last, Count, Dest, A, C, F
PageLabel (/Type /PageLabel)S, P, St; PdfWriter::setPageLabels() builds inline number tree
Named destinationsPdfWriter::setNamedDestinations() with NameTree
Explicit destinationsDestination class with static factory methods for all 8 types
OutputIntent (/Type /OutputIntent)S, OutputConditionIdentifier, RegistryName, Info, DestOutputProfile
OCG (/Type /OCG)Name, Intent, Usage; extends PdfObject
OCMD (/Type /OCMD)OCGs, P, VE; extends PdfObject
OCPropertiesOCGs, D, Configs; extends PdfObject
TransitionDict (/Type /Trans)S, D, Dm, M, Di, SS, B; assigned to Page::$transition
GroupAttributesS, CS, I, K; implements Serializable
NameTreeKids, Names, Limits; extends PdfObject
NumberTreeKids, Nums, Limits; extends PdfObject
MarkInfo dictMarked, UserProperties, Suspects; assigned to Catalog::$markInfo
Collection (/Type /Collection)Schema, D, View, Sort; extends PdfObject
CollectionItem (/Type /CollectionItem)Field values dict; extends PdfObject
CollectionSchema (/Type /CollectionSchema)Field definitions; extends PdfObject
Thread (/Type /Thread)I, F; extends PdfObject
Bead (/Type /Bead)T, N, V, P, R; extends PdfObject
StructTreeRoot (/Type /StructTreeRoot)K, IDTree, ParentTree, RoleMap, ClassMap; extends PdfObject
StructElem (/Type /StructElem)S, P, ID, Pg, K, A, C, R, T, Lang, Alt, E, ActualText; extends PdfObject
ObjectRef (/Type /OBJR)Pg, Obj; extends PdfObject
Cross-reference stream (/Type /XRef)Size, Index, Prev, W, Root, Info, ID; binary entry packing
Object stream (/Type /ObjStm)N, First, Extends; packs compressed indirect objects

Source: packages/pdf/core/src/Font/Font.php

FieldStatusNotes
/Type
/Subtype
/BaseFont
/FirstCharAuto-populated from AFM data
/LastCharAuto-populated from AFM data
/WidthsAuto-populated from AFM data
/FontDescriptor
/Encoding
/ToUnicodeCMap stream generated from TrueType cmap table
SubtypeClassSourceStatusNotes
/Type1Type1FontType1Font.phpIncludes standard 14 with AFM widths
/TrueTypeTrueTypeFontTrueTypeFont.phpFull font program embedding via /FontFile2
/Type0Type0FontType0Font.phpComposite font
/CIDFontType0CIDFontType0FontCIDFontType0Font.phpType 1/CFF descendant of Type 0 (enforced subclass)
/CIDFontType2CIDFontType2FontCIDFontType2Font.phpTrueType descendant of Type 0; /CIDToGIDMap supported
/MMType1MMType1FontMMType1Font.phpMultiple Master; encodes spaces in instance name as underscore
/Type3Type3FontType3Font.phpFontBBox, FontMatrix, CharProcs, Encoding, Resources

Source: packages/pdf/core/src/Font/FontDescriptor.php

FieldStatusNotes
/FontName
/FontFamily
/FontStretch
/FontWeight
/Flags
/FontBBox
/ItalicAngle
/Ascent
/Descent
/Leading
/CapHeight
/XHeight
/StemV
/StemH
/AvgWidth
/MaxWidth
/MissingWidth
/FontFileType 1 font program embedding via Type1Font::fromFile() + Type1FontFile
/FontFile2TrueType font program embedding via TrueTypeFont::fromFile()
/FontFile3CFF font program embedding via CFFFontFile
/CharSet

Source: packages/pdf/core/src/Font/Encoding.php

FieldStatusNotes
/BaseEncoding
/Differences
ObjectStatusNotes
CIDSystemInfo dictRegistry, Ordering, Supplement; typed on CIDFont::$cidSystemInfo
CMap stream (/Type /CMap)CMapName, CIDSystemInfo, WMode; CMapStream class
ToUnicode CMap streamGenerated from TrueType cmap table; WinAnsi byte → Unicode mapping
TrueType font embeddingFull font program embedded via /FontFile2; TrueTypeFont::fromFile()
Font subsettingTrueTypeSubsetter implemented
OpenType font supportOpenTypeParser + CFFFontFile via /FontFile3
Type 1 font parsingType1Parser — PFB/PFA formats, Type1Font::fromFile() factory
WOFF 1.0 decompressionWoffParser — WOFF→sfnt conversion
WOFF 2.0 decompressionWoff2Parser — Brotli decompression, table transforms, sfnt reconstruction
Variable font detectionTrueTypeParser::parseFvar() — axes, named instances, isVariableFont

Source: packages/pdf/core/src/Annotation/

FieldStatusNotes
/Type
/Subtype
/Rect
/Contents
/PPage reference
/NMAnnotation name
/MModification date
/FFlags
/APAppearance dict reference
/ASAppearance state
/Border
/CColor
/StructParent
/OCOptional content
/AFAssociated files
/caConstant opacity
/BMBlend mode
/LangLanguage

Markup Annotation Base Fields (§12.5.6.2 Table 170)

Section titled “Markup Annotation Base Fields (§12.5.6.2 Table 170)”

Source: packages/pdf/core/src/Annotation/MarkupAnnotation.php

FieldStatusNotes
/TText label (author) on MarkupAnnotation
/PopupLinked popup annotation reference
/CAConstant opacity override on markup
/RCRich content stream
/CreationDate
/IRTIn-reply-to chaining
/SubjShort description
/RTReply type (R / Group)
/ITIntent (e.g. FreeTextCallout, PolygonCloud, LineArrow)
/ExDataExternal data dict

All 17 markup annotation subclasses (TextAnnotation, FreeTextAnnotation, LineAnnotation, SquareAnnotation, CircleAnnotation, PolygonAnnotation, PolyLineAnnotation, HighlightAnnotation, UnderlineAnnotation, SquigglyAnnotation, StrikeOutAnnotation, StampAnnotation, CaretAnnotation, InkAnnotation, FileAttachmentAnnotation, SoundAnnotation, RedactAnnotation) extend MarkupAnnotation and inherit these fields.

SubtypeClassSourceStatusNotes
/TextTextAnnotationTextAnnotation.phpOpen, Name, State, StateModel
/LinkLinkAnnotationLinkAnnotation.phpDest, H, PA, QuadPoints, BS, A
/FreeTextFreeTextAnnotationFreeTextAnnotation.phpDA, Q, RC, DS, CL, IT, BE, RD, BS, LE
/HighlightHighlightAnnotationHighlightAnnotation.phpQuadPoints
/StampStampAnnotationStampAnnotation.phpName
/InkInkAnnotationInkAnnotation.phpInkList, BS
/PopupPopupAnnotationPopupAnnotation.phpParent, Open
/WidgetWidgetAnnotationWidgetAnnotation.phpH, MK, A, AA, BS, Parent
/LineLineAnnotationLineAnnotation.phpL, LE, IC, LL, LLE, Cap, IT, LLO, CP, Measure, CO
/SquareSquareAnnotationSquareAnnotation.phpIC, BE, RD, Measure
/CircleCircleAnnotationCircleAnnotation.phpIC, BE, RD, Measure
/PolygonPolygonAnnotationPolygonAnnotation.phpVertices, LE, IC, BE, IT, Measure
/PolyLinePolyLineAnnotationPolyLineAnnotation.phpVertices, LE, IC, BE, IT, Measure
/UnderlineUnderlineAnnotationUnderlineAnnotation.phpQuadPoints
/SquigglySquigglyAnnotationSquigglyAnnotation.phpQuadPoints
/StrikeOutStrikeOutAnnotationStrikeOutAnnotation.phpQuadPoints
/CaretCaretAnnotationCaretAnnotation.phpRD, Sy
/FileAttachmentFileAttachmentAnnotationFileAttachmentAnnotation.phpFS, Name
/SoundSoundAnnotationSoundAnnotation.phpSound, Name
/MovieMovieAnnotationMovieAnnotation.phpT, Movie, A
/ScreenScreenAnnotationScreenAnnotation.phpT, MK, A, AA
/PrinterMarkPrinterMarkAnnotationPrinterMarkAnnotation.phpMN
/TrapNetTrapNetAnnotationTrapNetAnnotation.phpLastModified, Version, AnnotStates, FontFauxing
/WatermarkWatermarkAnnotationWatermarkAnnotation.phpFixedPrint
/3DThreeDAnnotationThreeDAnnotation.php3DD, 3DV, 3DA, 3DI, 3DB
/RedactRedactAnnotationRedactAnnotation.phpQuadPoints, IC, RO, OverlayText, Repeat, DA, Q
/ProjectionProjectionAnnotationProjectionAnnotation.php
/RichMediaRichMediaAnnotationRichMediaAnnotation.phpRichMediaSettings, RichMediaContent
ObjectStatusNotes
AppearanceDict (AP)N, R, D; implements Serializable
AppearanceCharacteristics (MK)R, BC, BG, CA, RC, AC, I, RI, IX, IF, TP; implements Serializable
BorderStyle (BS)W, S, D; Annotation::$bs accepts it directly
BorderEffect (BE)S, I; FreeTextAnnotation::$be accepts it directly

Source: packages/pdf/core/src/Action/

/S ValueClassSourceStatusNotes
/GoToGoToActionGoToAction.phpD
/URIURIActionURIAction.phpURI, IsMap
/NamedNamedActionNamedAction.phpN
/JavaScriptJavaScriptActionJavaScriptAction.phpJS
/GoToRGoToRActionGoToRAction.phpF, D, NewWindow
/GoToEGoToEActionGoToEAction.phpF, D, NewWindow, T
/GoToDPGoToDPActionGoToDPAction.phpD, DP
/LaunchLaunchActionLaunchAction.phpF, Win, Mac, Unix, NewWindow
/ThreadThreadActionThreadAction.phpF, D, B
/SoundSoundActionSoundAction.phpSound, Volume, Synchronous, Repeat, Mix
/MovieMovieActionMovieAction.phpAnnotation, T, Operation
/HideHideActionHideAction.phpT, H
/SubmitFormSubmitFormActionSubmitFormAction.phpF, Fields, Flags
/ResetFormResetFormActionResetFormAction.phpFields, Flags
/ImportDataImportDataActionImportDataAction.phpF
/SetOCGStateSetOCGStateActionSetOCGStateAction.phpState, PreserveRB
/RenditionRenditionActionRenditionAction.phpOP, R, AN, JS
/TransTransActionTransAction.phpTrans
/GoTo3DViewGoTo3DViewActionGoTo3DViewAction.phpTA, V
/RichMediaExecuteRichMediaExecuteActionRichMediaExecuteAction.phpTA, TI, CMD

Source: packages/pdf/core/src/Interactive/Form/AcroForm.php

FieldStatusNotes
/Fields
/NeedAppearances
/SigFlags
/COCalculation order
/DRDefault resources
/DADefault appearance
/QJustification
/XFAReference stored
FieldStatusNotes
/FT
/Parent
/Kids
/TPartial name
/TUUser name
/TMMapping name
/FfFlags
/VValue
/DVDefault value
/AAAdditional actions
TypeClassSourceStatusNotes
/BtnButtonFieldButtonField.phpH, MK, Opt; pushbutton/checkbox/radio via Ff
/TxTextFieldTextField.phpMaxLen, Q; multiline/password/comb via Ff
/ChChoiceFieldChoiceField.phpOpt, TI, I; combo/edit/sort via Ff
/SigSignatureFieldSignatureField.phpSigFlags, Lock, SV; /V accepts SignatureValue
ObjectStatusNotes
Signature value dict (/Type /Sig)SignatureValue — placeholder for real signing; all Table 258 entries
SignatureReference dictSignatureReference — TransformMethod, TransformParams, Data, DigestMethod
DocMDP transform paramsDocMDPTransformParams — P, V
FieldMDP transform paramsFieldMDPTransformParams — Action, Fields, V
UR3 transform paramsUR3TransformParams — Document, Msg, V, Annots, Form, Signature, EF, P
Perms dict (in Catalog)Catalog::$perms inline PdfDictionary — DocMDP, UR3, Legal

Source: packages/pdf/core/src/Graphics/ExtGState.php

FieldStatusNotes
/LWLine width
/LCLine cap
/LJLine join
/MLMiter limit
/DDash pattern
/RIRendering intent
/OPOverprint stroke
/opOverprint fill
/OPMOverprint mode
/Font
/FLFlatness
/SMSmoothness
/SAStroke adjustment
/BMBlend mode
/SMaskSoft mask reference
/CAStroke alpha
/caFill alpha
/AISAlpha is shape
/TKText knockout
/BGBlack generation function
/BG2Black generation (PDF 1.3+)
/UCRUndercolor removal
/UCR2Undercolor removal (PDF 1.3+)
/TRTransfer function
/TR2Transfer function (PDF 1.3+)
/HTHalftone
/UseBlackPtCompBlack point compensation
/HTOHalftone origin

Source: packages/pdf/core/src/Graphics/SoftMask.php

FieldStatusNotes
/TypeSoftMask class
/SAlpha or Luminosity
/GTransparency group XObject
/BCBackdrop color
/TRTransfer function

Source: packages/pdf/core/src/Graphics/ColorSpace/

Color SpaceStatusNotes
/DeviceGrayDeviceGray
/DeviceRGBDeviceRGB
/DeviceCMYKDeviceCMYK
/CalGrayCalGray — WhitePoint, BlackPoint, Gamma
/CalRGBCalRGB — WhitePoint, BlackPoint, Gamma, Matrix
/LabLab — WhitePoint, BlackPoint, Range
/ICCBasedICCBased — wraps an ICC profile stream reference
/IndexedIndexed — base, hival, lookup
/PatternPattern — bare name or [Pattern underlyingSpace]
/SeparationSeparation — colorant, alternate space, tint transform
/DeviceNDeviceN — names, alternate space, tint transform, attributes

Source: packages/pdf/core/src/Graphics/Pattern/

TypeStatusNotes
/PatternType 1 (Tiling)TilingPattern — PaintType, TilingType, BBox, XStep, YStep, Resources, Matrix
/PatternType 2 (Shading)ShadingPattern — Shading, Matrix, ExtGState

Source: packages/pdf/core/src/Graphics/Shading/

TypeStatusNotes
/ShadingType 1 (Function-based)ShadingType1 — ColorSpace, Domain, Matrix, Function
/ShadingType 2 (Axial)ShadingType2 — Coords, Domain, Extend, Function (linear gradient)
/ShadingType 3 (Radial)ShadingType3 — Coords, Domain, Extend, Function (radial gradient)
/ShadingType 4 (Free-form Gouraud)ShadingType4 stream — BitsPerCoordinate/Component/Flag, Decode, Function
/ShadingType 5 (Lattice Gouraud)ShadingType5 stream — VerticesPerRow
/ShadingType 6 (Coons patch)ShadingType6 stream
/ShadingType 7 (Tensor-product patch)ShadingType7 stream

Source: packages/pdf/core/src/Graphics/XObject/

SubtypeClassStatusNotes
/ImageImageXObjectWidth, Height, ColorSpace, BitsPerComponent, Filter, DecodeParms, Intent, ImageMask, Mask, SMask, Interpolate, Alternates
/FormFormXObjectBBox, Matrix, Resources
/PSPostScriptXObjectDeprecated since PDF 1.7.1

Source: packages/pdf/core/src/Graphics/Function/

TypeStatusNotes
/FunctionType 0 (Sampled)FunctionType0 stream — Domain, Range, Size, BitsPerSample, Order, Encode, Decode
/FunctionType 2 (Exponential)FunctionType2 — Domain, Range, C0, C1, N
/FunctionType 3 (Stitching)FunctionType3 — Domain, Functions, Bounds, Encode
/FunctionType 4 (PostScript)FunctionType4 stream — PS operators in stream body

Functions are a prerequisite for Shading types 1–3 and Separation/DeviceN color spaces.

TypeStatusNotes
/HalftoneType 1 (dictionary)Frequency, Angle, SpotFunction
/HalftoneType 5 (multidotted)Dict of component halftones
/HalftoneType 6 (threshold array stream)
/HalftoneType 10 (threshold)
/HalftoneType 16 (threshold)

Source: packages/pdf/core/src/Content/ContentStream.php

OperatorCategoryStatusNotes
mPath
lPath
cPath
vPath
yPath
hPath
rePath
SPaint
sPaint
fPaint
FPaint
f*Paint
BPaint
B*Paint
bPaint
b*Paint
nPaint
WClip
W*Clip
qState
QState
cmState
wState
JState
jState
MState
dState
riState
iState
gsState
CSColor
csColor
SCColor
SCNColor
scColor
scnColor
GColor
gColor
RGColor
rgColor
KColor
kColor
TcText
TwText
TzText
TLText
TfText
TrText
TsText
TdText
TDText
TmText
T*Text
TjText
TJText
DoXObject
BI/ID/EIImage
'TextmoveToNextLineAndShowText()
"TextsetSpacingMoveAndShowText()
shShadingpaintShading()
d0Type3setGlyphWidth()
d1Type3setGlyphWidthAndBoundingBox()
MPMarkedContentmarkedContentPoint()
DPMarkedContentmarkedContentPointWithProperties()
BMCMarkedContentbeginMarkedContent()
BDCMarkedContentbeginMarkedContentWithProperties()
EMCMarkedContentendMarkedContent()
BXCompatbeginCompatibility()
EXCompatendCompatibility()

Source: packages/pdf/core/src/Multimedia/

ObjectStatusNotes
Sound (/Type /Sound)Sound stream — R, C, B, E, CO, CP
Movie dictMovie — F, Aspect, Rotate, Poster
Rendition (/Type /Rendition)MediaRendition (MR), SelectorRendition (SR)
MediaClip (/Type /MediaClip)MediaClipData (MCD), MediaClipSection (MCS)
MediaPlayParams (/Type /MediaPlayParams)MediaPlayParams — MH, BE, PL
MediaScreenParams (/Type /MediaScreenParams)MediaScreenParams — MH, BE
Navigator (/Type /Navigator)Navigator — NA, NR, Duration

Source: packages/pdf/core/src/FileSpec/

ObjectStatusNotes
FileSpec (/Type /Filespec)FileSpec — FS, F, UF, DOS, Mac, Unix, ID, V, EF, RF, Desc, CI
EmbeddedFile stream (/Type /EmbeddedFile)EmbeddedFile — Subtype, Params
EmbeddedFileParams dictEmbeddedFileParams — Size, CreationDate, ModDate, Mac, CheckSum

Source: packages/pdf/core/src/Security/

Object / FieldStatusNotes
EncryptDictionary (/Type /Encrypt)EncryptDictionary — object model only
Standard handler fieldsR, O, U, P, EncryptMetadata, OE, UE, Perms on EncryptDictionary
Crypt filter dictCryptFilter — Type, CFM, AuthEvent, Length
Public-key handlerPublicKeyRecipient + /Recipients array
RC4 cipherphpdftk/cryptRc4Cipher
AES-128/256 cipherphpdftk/cryptAesCipher
PDF key derivationphpdftk/cryptPdfKeyDerivation

Fully wired: PdfWriter::setEncryption() registers the /Encrypt dictionary, encrypts all strings/streams per-object during generate(), and emits /Encrypt in the trailer automatically. Supports RC4-40, RC4-128, AES-128, AES-256, and public-key (certificate-based) encryption.


Source: packages/pdf/core/src/Interactive/Signature/

ObjectStatusNotes
Signature value dict (/Type /Sig)SignatureValue — all Table 258 entries
SignatureReference dictSignatureReference — TransformMethod, TransformParams, Data, DigestMethod
DocMDP transform paramsDocMDPTransformParams
FieldMDP transform paramsFieldMDPTransformParams
UR3 transform paramsUR3TransformParams
PKCS#7 / CAdES signingPkcs7Signer + PdfWriter::setSigner() — ByteRange + /Contents patching
Timestamp authorityDocTimeStamp + TsaClient — full RFC 3161 TSA HTTP client with SHA-256/384/512, wired into signing pipeline via setTimestamper()

Source: packages/pdf/core/src/ThreeD/

ObjectStatusNotes
3D stream (/Type /3D)ThreeDStream — Subtype (U3D or PRC), VA, DV, AN, ColorSpace
3DView dict (/Type /3DView)ThreeDView — XN, IN, MS, C2W, CO, P, O, BG, RM, LS, SA
3DBackground dictThreeDBackground — CS, C, EA
3DRenderMode dictThreeDRenderMode — Subtype, AC, FC, Opacity, CV
3DLightingScheme dictThreeDLightingScheme — Subtype
3DCrossSection dictThreeDCrossSection — C, O, PC, PO, IV, IC, ST

Source: packages/pdf/core/src/Document/StructTreeRoot.php, StructElem.php

Object / FeatureStatusNotes
StructTreeRoot (/Type /StructTreeRoot)K, IDTree, ParentTree, ParentTreeNextKey, RoleMap, ClassMap
StructElem (/Type /StructElem)S, P, ID, Pg, K, A, C, R, T, Lang, Alt, E, ActualText
ObjectRef (/Type /OBJR)Pg, Obj
Marked content operatorsBMC, BDC, EMC, MP, DP implemented in ContentStream
RoleMap dictRoleMap — typed wrapper mapping custom types to standard ones
ClassMap dictClassMap — maps class names to StructAttribute entries
Attribute objectsStructAttribute — /O owner + arbitrary entries

Source: packages/encoding/src/

EncodingStatusNotes
WinAnsiEncodingWinAnsiTable — standard Windows encoding for most modern PDFs
MacRomanEncodingMacRomanTable — Mac OS encoding for older PDFs
StandardEncodingStandardEncodingTable — default Type 1 font encoding per Table D.1
MacExpertEncodingMacExpertEncodingTable — expert/small-caps Type 1 fonts per Table D.4
PDFDocEncodingPdfDocEncodingTable — text strings in Info, bookmarks, annotations; auto-detects UTF-16BE/UTF-8/fallback
Adobe Glyph ListGlyphList — glyph name ↔ Unicode mapping
CJK predefined CMaps16 CJK CMaps (UniGB-UCS2-H, UniJIS-UCS2-H, etc.)

Source: packages/filters/src/

FilterEncodeDecodeNotes
FlateDecodeFlateFilter — zlib inflate/deflate
ASCII85DecodeAscii85Filter — base-85 encoding
ASCIIHexDecodeAsciiHexFilter — hex encoding
RunLengthDecodeRunLengthFilter — PackBits-style RLE
LZWDecodeLzwFilter — LZW compression and decompression with EarlyChange support
CCITTFaxDecodeCCITTFaxFilter — Group 3 (1D) and Group 4 (2D) Huffman fax encoding and decoding
JBIG2DecodeJbig2Filter — MMR generic region encoding, segment parsing, jbig2dec fallback
DCTDecodePass-through (JPEG data usable as-is)
JPXDecodePass-through (JPEG 2000 data usable as-is)
PredictorPredictorFilter — PNG/TIFF predictor encoding and decoding for Flate/LZW

Source: packages/pdf/reader/src/

FeatureStatusNotes
Classic xref table parsingStandard and lenient modes
Xref stream parsing (PDF 1.5+)Binary entry unpacking with width clamping
Object stream unpackingDecompresses and parses packed objects
Incremental update chains/Prev chain with loop detection
Hybrid xref supportScans both classic xref and xref streams
Linearized PDF detectionScans up to 50 objects for linearization dict
Encryption (read)RC4-40/128, AES-128/256, public-key
Text extractionAll encoding fallbacks (Standard/MacRoman/MacExpert/WinAnsi)
Positioned text extractionPer-span x/y/width/height via full text state machine (CTM, Tm, Tc, Tw, Tz, Ts, font widths)
Error toleranceMissing startxref, corrupted xref, truncated PDF, trailing garbage, missing %%EOF
Object recoveryScans for endobj, tolerates missing endobj, partial dicts
Stream recoverySliding-window endstream scan with 64MB safety limit

Source: packages/pdf/core/src/File/PdfFileWriter.php

FeatureStatusNotes
Classic xref output20-byte-per-entry xref tables
Xref stream outputCrossReferenceStream binary packing
Object stream outputObjectStream compressed indirect objects
Incremental updatesIncrementalWriter with /Prev chain
Linearized outputTwo-pass write with padded linearization dict, hint stream, first-page partitioning
Stream compressionAuto FlateDecode compression
Version auto-bump172 #[RequiresPdfVersion] annotations, strict mode, ceiling mode
Deprecation enforcementremovedIn on #[DeprecatedPdfFeature], strict deprecation mode

See iso-standards-coverage.md for the full ISO conformance map with profile enums, constraint classes, test files, and the constraint matrix.


AreaImplementedTotal%
Catalog fields2828100%
PageTree fields3333100%
Page fields3232100%
Info fields99100%
ViewerPreferences fields1818100%
Document structure objects2424100%
Font subtypes77100%
FontDescriptor fields1919100%
Annotation base fields1818100%
Markup annotation fields1010100%
Annotation subtypes2626100%
Supporting annot dicts44100%
Actions2020100%
AcroForm fields88100%
Field types44100%
ExtGState fields2828100%
Soft Mask fields55100%
Color spaces1111100%
XObject subtypes33100%
Function types44100%
Pattern types22100%
Shading types77100%
Content stream operators6969100%
Encryption88100%
Digital signatures77100%
Multimedia77100%
File specifications33100%
Accessibility / Tagged PDF77100%
3D66100%
Character encodings77100%
Stream filters (codecs)1010100%
Reader capabilities1111100%
Writer capabilities77100%

Every spec object has a PHP class and full end-to-end integration.

RFC 3161 timestamping is fully wired: TsaClient sends TimeStampReq messages to any TSA server, and PdfWriter::setTimestamper() / PdfFileWriter::setTimestamper() produce PAdES-compatible document-level timestamps via DocTimeStamp. TSA clients can also be attached alongside regular signers via setTsaClient().

Encryption is fully wired: PdfWriter::setEncryption() (and PdfFileWriter::setEncryption()) register the /Encrypt dictionary, encrypt all strings and streams per-object during generate(), and emit /Encrypt in the trailer automatically. Supports RC4-40, RC4-128, AES-128, AES-256, and public-key (certificate-based) encryption.

PdfWriter::setSigner() is fully wired: it computes /ByteRange, patches /Contents in place, and produces signatures verified in CI via openssl cms -verify.


See version-coverage.md for the full PDF version feature map with 172 annotated classes/properties, deprecated features, and runtime checks.