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✓
/Outlines✓Outline + OutlineItem classes implemented
/Names✓Reference stored; NameTree class available
/Dests✓Ref stored; Destination class available
/ViewerPreferences✓
/PageLayout✓
/PageMode✓
/OpenAction✓
/AcroForm✓
/Metadata✓Reference stored; XMP stream via phpdftk/xmp
/MarkInfo✓MarkInfo class on Catalog::$markInfo
/Lang✓
/AA✓Reference stored
/URI✓Inline dict
/SpiderInfo✓Reference stored
/OutputIntents✓Array of OutputIntent refs
/PieceInfo✓Inline dict
/OCProperties✓Reference stored
/Perms✓Inline dict
/Legal✓Inline dict
/Requirements✓Array stored
/Collection✓Reference stored
/NeedsRendering✓
/DSS✓DSS class + DssBuilder + LtvSigner for PAdES LTV — certs, OCSPs, CRLs, VRI entries
/Extensions✓Developer extensions dict
/AF✓Associated files array
/DPartRoot✓DPartRoot reference (PDF 2.0)

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

FieldStatusNotes
/Type✓
/Parent✓
/Kids✓
/Count✓
/MediaBox✓
/Resources✓
/Rotate✓
/CropBox✓Inheritable box
/BleedBox✓Inheritable box
/TrimBox✓Inheritable box
/ArtBox✓Inheritable box
/BoxColorInfo✓Inline dict
/Group✓Reference stored
/Thumb✓Reference stored
/B✓Article bead refs
/Dur✓
/Trans✓TransitionDict or Serializable
/Annots✓Inheritable annotations
/AA✓Reference stored
/Metadata✓XMP stream reference
/PieceInfo✓Inline dict
/StructParents✓
/ID✓
/PZ✓
/SeparationInfo✓Inline dict
/Tabs✓
/TemplateInstantiated✓
/PresSteps✓Reference stored
/UserUnit✓
/VP✓Viewport array

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

FieldStatusNotes
/Type✓
/Parent✓
/Resources✓
/MediaBox✓
/CropBox✓
/BleedBox✓
/TrimBox✓
/ArtBox✓
/Contents✓
/Rotate✓
/Annots✓
/Group✓Reference stored
/Thumb✓Reference stored
/UserUnit✓
/StructParents✓
/Trans✓TransitionDict class; S, D, Dm, M, Di, SS, B
/Dur✓
/BoxColorInfo✓Typed BoxColorInfo + BoxStyle (§14.11.2)
/B✓Article beads
/AF✓Associated files
/OutputIntents✓Page-level output intents
/DPart✓Document part reference (PDF 2.0)
/AA✓Reference stored
/Metadata✓XMP stream reference on page
/PieceInfo✓Reference stored
/ID✓
/PZ✓
/SeparationInfo✓Inline dict
/Tabs✓
/TemplateInstantiated✓
/PresSteps✓Reference stored
/VP✓Viewport 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
OutlineItem✓Title, Parent, Prev, Next, First, Last, Count, Dest, A, C, F
PageLabel (/Type /PageLabel)✓S, P, St; PdfWriter::setPageLabels() builds inline number tree
Named destinations✓PdfWriter::setNamedDestinations() with NameTree
Explicit destinations✓Destination 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
OCProperties✓OCGs, D, Configs; extends PdfObject
TransitionDict (/Type /Trans)✓S, D, Dm, M, Di, SS, B; assigned to Page::$transition
GroupAttributes✓S, CS, I, K; implements Serializable
NameTree✓Kids, Names, Limits; extends PdfObject
NumberTree✓Kids, Nums, Limits; extends PdfObject
MarkInfo dict✓Marked, 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✓
/FirstChar✓Auto-populated from AFM data
/LastChar✓Auto-populated from AFM data
/Widths✓Auto-populated from AFM data
/FontDescriptor✓
/Encoding✓
/ToUnicode✓CMap stream generated from TrueType cmap table
SubtypeClassSourceStatusNotes
/Type1Type1FontType1Font.php✓Includes standard 14 with AFM widths
/TrueTypeTrueTypeFontTrueTypeFont.php✓Full font program embedding via /FontFile2
/Type0Type0FontType0Font.php✓Composite font
/CIDFontType0CIDFontType0FontCIDFontType0Font.php✓Type 1/CFF descendant of Type 0 (enforced subclass)
/CIDFontType2CIDFontType2FontCIDFontType2Font.php✓TrueType descendant of Type 0; /CIDToGIDMap supported
/MMType1MMType1FontMMType1Font.php✓Multiple Master; encodes spaces in instance name as underscore
/Type3Type3FontType3Font.php✓FontBBox, 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✓
/FontFile✓Type 1 font program embedding via Type1Font::fromFile() + Type1FontFile
/FontFile2✓TrueType font program embedding via TrueTypeFont::fromFile()
/FontFile3✓CFF font program embedding via CFFFontFile
/CharSet✓

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

FieldStatusNotes
/BaseEncoding✓
/Differences✓
ObjectStatusNotes
CIDSystemInfo dict✓Registry, Ordering, Supplement; typed on CIDFont::$cidSystemInfo
CMap stream (/Type /CMap)✓CMapName, CIDSystemInfo, WMode; CMapStream class
ToUnicode CMap stream✓Generated from TrueType cmap table; WinAnsi byte → Unicode mapping
TrueType font embedding✓Full font program embedded via /FontFile2; TrueTypeFont::fromFile()
Font subsetting✓TrueTypeSubsetter implemented
OpenType font support✓OpenTypeParser + CFFFontFile via /FontFile3
Type 1 font parsing✓Type1Parser — PFB/PFA formats, Type1Font::fromFile() factory
WOFF 1.0 decompression✓WoffParser — WOFF→sfnt conversion
WOFF 2.0 decompression✓Woff2Parser — Brotli decompression, table transforms, sfnt reconstruction
Variable font detection✓TrueTypeParser::parseFvar() — axes, named instances, isVariableFont

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

FieldStatusNotes
/Type✓
/Subtype✓
/Rect✓
/Contents✓
/P✓Page reference
/NM✓Annotation name
/M✓Modification date
/F✓Flags
/AP✓Appearance dict reference
/AS✓Appearance state
/Border✓
/C✓Color
/StructParent✓
/OC✓Optional content
/AF✓Associated files
/ca✓Constant opacity
/BM✓Blend mode
/Lang✓Language

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
/T✓Text label (author) on MarkupAnnotation
/Popup✓Linked popup annotation reference
/CA✓Constant opacity override on markup
/RC✓Rich content stream
/CreationDate✓
/IRT✓In-reply-to chaining
/Subj✓Short description
/RT✓Reply type (R / Group)
/IT✓Intent (e.g. FreeTextCallout, PolygonCloud, LineArrow)
/ExData✓External 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.php✓Open, Name, State, StateModel
/LinkLinkAnnotationLinkAnnotation.php✓Dest, H, PA, QuadPoints, BS, A
/FreeTextFreeTextAnnotationFreeTextAnnotation.php✓DA, Q, RC, DS, CL, IT, BE, RD, BS, LE
/HighlightHighlightAnnotationHighlightAnnotation.php✓QuadPoints
/StampStampAnnotationStampAnnotation.php✓Name
/InkInkAnnotationInkAnnotation.php✓InkList, BS
/PopupPopupAnnotationPopupAnnotation.php✓Parent, Open
/WidgetWidgetAnnotationWidgetAnnotation.php✓H, MK, A, AA, BS, Parent
/LineLineAnnotationLineAnnotation.php✓L, LE, IC, LL, LLE, Cap, IT, LLO, CP, Measure, CO
/SquareSquareAnnotationSquareAnnotation.php✓IC, BE, RD, Measure
/CircleCircleAnnotationCircleAnnotation.php✓IC, BE, RD, Measure
/PolygonPolygonAnnotationPolygonAnnotation.php✓Vertices, LE, IC, BE, IT, Measure
/PolyLinePolyLineAnnotationPolyLineAnnotation.php✓Vertices, LE, IC, BE, IT, Measure
/UnderlineUnderlineAnnotationUnderlineAnnotation.php✓QuadPoints
/SquigglySquigglyAnnotationSquigglyAnnotation.php✓QuadPoints
/StrikeOutStrikeOutAnnotationStrikeOutAnnotation.php✓QuadPoints
/CaretCaretAnnotationCaretAnnotation.php✓RD, Sy
/FileAttachmentFileAttachmentAnnotationFileAttachmentAnnotation.php✓FS, Name
/SoundSoundAnnotationSoundAnnotation.php✓Sound, Name
/MovieMovieAnnotationMovieAnnotation.php✓T, Movie, A
/ScreenScreenAnnotationScreenAnnotation.php✓T, MK, A, AA
/PrinterMarkPrinterMarkAnnotationPrinterMarkAnnotation.php✓MN
/TrapNetTrapNetAnnotationTrapNetAnnotation.php✓LastModified, Version, AnnotStates, FontFauxing
/WatermarkWatermarkAnnotationWatermarkAnnotation.php✓FixedPrint
/3DThreeDAnnotationThreeDAnnotation.php✓3DD, 3DV, 3DA, 3DI, 3DB
/RedactRedactAnnotationRedactAnnotation.php✓QuadPoints, IC, RO, OverlayText, Repeat, DA, Q
/ProjectionProjectionAnnotationProjectionAnnotation.php✓
/RichMediaRichMediaAnnotationRichMediaAnnotation.php✓RichMediaSettings, 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.php✓D
/URIURIActionURIAction.php✓URI, IsMap
/NamedNamedActionNamedAction.php✓N
/JavaScriptJavaScriptActionJavaScriptAction.php✓JS
/GoToRGoToRActionGoToRAction.php✓F, D, NewWindow
/GoToEGoToEActionGoToEAction.php✓F, D, NewWindow, T
/GoToDPGoToDPActionGoToDPAction.php✓D, DP
/LaunchLaunchActionLaunchAction.php✓F, Win, Mac, Unix, NewWindow
/ThreadThreadActionThreadAction.php✓F, D, B
/SoundSoundActionSoundAction.php✓Sound, Volume, Synchronous, Repeat, Mix
/MovieMovieActionMovieAction.php✓Annotation, T, Operation
/HideHideActionHideAction.php✓T, H
/SubmitFormSubmitFormActionSubmitFormAction.php✓F, Fields, Flags
/ResetFormResetFormActionResetFormAction.php✓Fields, Flags
/ImportDataImportDataActionImportDataAction.php✓F
/SetOCGStateSetOCGStateActionSetOCGStateAction.php✓State, PreserveRB
/RenditionRenditionActionRenditionAction.php✓OP, R, AN, JS
/TransTransActionTransAction.php✓Trans
/GoTo3DViewGoTo3DViewActionGoTo3DViewAction.php✓TA, V
/RichMediaExecuteRichMediaExecuteActionRichMediaExecuteAction.php✓TA, TI, CMD

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

FieldStatusNotes
/Fields✓
/NeedAppearances✓
/SigFlags✓
/CO✓Calculation order
/DR✓Default resources
/DA✓Default appearance
/Q✓Justification
/XFA✓Reference stored
FieldStatusNotes
/FT✓
/Parent✓
/Kids✓
/T✓Partial name
/TU✓User name
/TM✓Mapping name
/Ff✓Flags
/V✓Value
/DV✓Default value
/AA✓Additional actions
TypeClassSourceStatusNotes
/BtnButtonFieldButtonField.php✓H, MK, Opt; pushbutton/checkbox/radio via Ff
/TxTextFieldTextField.php✓MaxLen, Q; multiline/password/comb via Ff
/ChChoiceFieldChoiceField.php✓Opt, TI, I; combo/edit/sort via Ff
/SigSignatureFieldSignatureField.php✓SigFlags, Lock, SV; /V accepts SignatureValue
ObjectStatusNotes
Signature value dict (/Type /Sig)✓SignatureValue — placeholder for real signing; all Table 258 entries
SignatureReference dict✓SignatureReference — TransformMethod, TransformParams, Data, DigestMethod
DocMDP transform params✓DocMDPTransformParams — P, V
FieldMDP transform params✓FieldMDPTransformParams — Action, Fields, V
UR3 transform params✓UR3TransformParams — 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
/LW✓Line width
/LC✓Line cap
/LJ✓Line join
/ML✓Miter limit
/D✓Dash pattern
/RI✓Rendering intent
/OP✓Overprint stroke
/op✓Overprint fill
/OPM✓Overprint mode
/Font✓
/FL✓Flatness
/SM✓Smoothness
/SA✓Stroke adjustment
/BM✓Blend mode
/SMask✓Soft mask reference
/CA✓Stroke alpha
/ca✓Fill alpha
/AIS✓Alpha is shape
/TK✓Text knockout
/BG✓Black generation function
/BG2✓Black generation (PDF 1.3+)
/UCR✓Undercolor removal
/UCR2✓Undercolor removal (PDF 1.3+)
/TR✓Transfer function
/TR2✓Transfer function (PDF 1.3+)
/HT✓Halftone
/UseBlackPtComp✓Black point compensation
/HTO✓Halftone origin

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

FieldStatusNotes
/Type✓SoftMask class
/S✓Alpha or Luminosity
/G✓Transparency group XObject
/BC✓Backdrop color
/TR✓Transfer function

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

Color SpaceStatusNotes
/DeviceGray✓DeviceGray
/DeviceRGB✓DeviceRGB
/DeviceCMYK✓DeviceCMYK
/CalGray✓CalGray — WhitePoint, BlackPoint, Gamma
/CalRGB✓CalRGB — WhitePoint, BlackPoint, Gamma, Matrix
/Lab✓Lab — WhitePoint, BlackPoint, Range
/ICCBased✓ICCBased — wraps an ICC profile stream reference
/Indexed✓Indexed — base, hival, lookup
/Pattern✓Pattern — bare name or [Pattern underlyingSpace]
/Separation✓Separation — colorant, alternate space, tint transform
/DeviceN✓DeviceN — 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
/ImageImageXObject✓Width, Height, ColorSpace, BitsPerComponent, Filter, DecodeParms, Intent, ImageMask, Mask, SMask, Interpolate, Alternates
/FormFormXObject✓BBox, Matrix, Resources
/PSPostScriptXObject✓Deprecated 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✓
'Text✓moveToNextLineAndShowText()
"Text✓setSpacingMoveAndShowText()
shShading✓paintShading()
d0Type3✓setGlyphWidth()
d1Type3✓setGlyphWidthAndBoundingBox()
MPMarkedContent✓markedContentPoint()
DPMarkedContent✓markedContentPointWithProperties()
BMCMarkedContent✓beginMarkedContent()
BDCMarkedContent✓beginMarkedContentWithProperties()
EMCMarkedContent✓endMarkedContent()
BXCompat✓beginCompatibility()
EXCompat✓endCompatibility()

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

ObjectStatusNotes
Sound (/Type /Sound)✓Sound stream — R, C, B, E, CO, CP
Movie dict✓Movie — 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 dict✓EmbeddedFileParams — Size, CreationDate, ModDate, Mac, CheckSum

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

Object / FieldStatusNotes
EncryptDictionary (/Type /Encrypt)✓EncryptDictionary — object model only
Standard handler fields✓R, O, U, P, EncryptMetadata, OE, UE, Perms on EncryptDictionary
Crypt filter dict✓CryptFilter — Type, CFM, AuthEvent, Length
Public-key handler✓PublicKeyRecipient + /Recipients array
RC4 cipher✓phpdftk/crypt — Rc4Cipher
AES-128/256 cipher✓phpdftk/crypt — AesCipher
PDF key derivation✓phpdftk/crypt — PdfKeyDerivation

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 dict✓SignatureReference — TransformMethod, TransformParams, Data, DigestMethod
DocMDP transform params✓DocMDPTransformParams
FieldMDP transform params✓FieldMDPTransformParams
UR3 transform params✓UR3TransformParams
PKCS#7 / CAdES signing✓Pkcs7Signer + PdfWriter::setSigner() — ByteRange + /Contents patching
Timestamp authority✓DocTimeStamp + 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 dict✓ThreeDBackground — CS, C, EA
3DRenderMode dict✓ThreeDRenderMode — Subtype, AC, FC, Opacity, CV
3DLightingScheme dict✓ThreeDLightingScheme — Subtype
3DCrossSection dict✓ThreeDCrossSection — 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 operators✓BMC, BDC, EMC, MP, DP implemented in ContentStream
RoleMap dict✓RoleMap — typed wrapper mapping custom types to standard ones
ClassMap dict✓ClassMap — maps class names to StructAttribute entries
Attribute objects✓StructAttribute — /O owner + arbitrary entries

Source: packages/encoding/src/

EncodingStatusNotes
WinAnsiEncoding✓WinAnsiTable — standard Windows encoding for most modern PDFs
MacRomanEncoding✓MacRomanTable — Mac OS encoding for older PDFs
StandardEncoding✓StandardEncodingTable — default Type 1 font encoding per Table D.1
MacExpertEncoding✓MacExpertEncodingTable — expert/small-caps Type 1 fonts per Table D.4
PDFDocEncoding✓PdfDocEncodingTable — text strings in Info, bookmarks, annotations; auto-detects UTF-16BE/UTF-8/fallback
Adobe Glyph List✓GlyphList — glyph name ↔ Unicode mapping
CJK predefined CMaps✓16 CJK CMaps (UniGB-UCS2-H, UniJIS-UCS2-H, etc.)

Source: packages/filters/src/

FilterEncodeDecodeNotes
FlateDecode✓✓FlateFilter — zlib inflate/deflate
ASCII85Decode✓✓Ascii85Filter — base-85 encoding
ASCIIHexDecode✓✓AsciiHexFilter — hex encoding
RunLengthDecode✓✓RunLengthFilter — PackBits-style RLE
LZWDecode✓✓LzwFilter — LZW compression and decompression with EarlyChange support
CCITTFaxDecode✓✓CCITTFaxFilter — Group 3 (1D) and Group 4 (2D) Huffman fax encoding and decoding
JBIG2Decode✓✓Jbig2Filter — MMR generic region encoding, segment parsing, jbig2dec fallback
DCTDecode——Pass-through (JPEG data usable as-is)
JPXDecode——Pass-through (JPEG 2000 data usable as-is)
Predictor✓✓PredictorFilter — PNG/TIFF predictor encoding and decoding for Flate/LZW

Source: packages/pdf/reader/src/

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

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

FeatureStatusNotes
Classic xref output✓20-byte-per-entry xref tables
Xref stream output✓CrossReferenceStream binary packing
Object stream output✓ObjectStream compressed indirect objects
Incremental updates✓IncrementalWriter with /Prev chain
Linearized output✓Two-pass write with padded linearization dict, hint stream, first-page partitioning
Stream compression✓Auto FlateDecode compression
Version auto-bump✓172 #[RequiresPdfVersion] annotations, strict mode, ceiling mode
Deprecation enforcement✓removedIn 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.