PDF Specification Coverage

PDFBox is aiming to support PDF files inline with the ISO-32000 (PDF) Specification ISO Site Adobe Version

The following table outlines the status of the implementation of various part of the PDF specification as well as the reference to the java packages and classes implementing these.

The table below is work in progress as we enhance our documentation. If you find errors within please report the [issue](https://issues.apache.org/jira/browse/pdfbox).

For easier reading the package names are abbreviated. o.a.p is used instead of org.apache.pdfbox.

Coverage

Citation Description PDFBox class or package Notes
7.2 Lexical Conventions The conventions are generally followed. There is no specific implementation.
7.3 Objects o.a.p.cos
7.4 Filters o.a.p.filter
7.4.2 ASCIIHexDecode Filter o.a.p.filter.ASCIIHexFilter
7.4.3 ASCII85Decode Filter o.a.p.filter.ASCII85Filter
7.4.4 LZWDecode and FlateDecode o.a.p.filter.LZWFilter, o.a.p.filter.FlateFilter
7.4.5 RunLengthDecode Filter o.a.p.filter.RunLengthDecodeFilter only for decoding
7.4.6 CCITTFaxDecode Filter o.a.p.filter.CCITTFaxDecodeFilter only for decoding
7.4.7 JBIG2Decode Filter o.a.p.filter.JBIG2Filter only for decoding
7.4.8 DCTDecode Filter o.a.p.filter.DCTFilter not implemented
7.4.9 JPXDecode Filter o.a.p.filter.JPXFilter only for decoding
7.4.10 Crypt Filter o.a.p.filter.CryptFilter only Identity filter
7.5 File Structure see details below
7.5.2 File Header supported
7.5.3 File Body supported
7.5.4 Cross-Reference Table supported
7.5.5 File Trailer supported
7.5.6 Incremental Updates reading supported; writing supported only for signing
7.5.7 Object Streams o.a.p.cos.COSStream
7.5.8 Cross-Reference Streams o.a.p.parsers.PDFXrefStreamParser only for reading a PDF. Not supported for writing. Hybrid-reference [7.5.8.4] not supported
7.6 Encryption org.apache.pdfbox.pdmodel.encryption to be documented
7.7 Document Structure see details below
7.7.2 Document Catalog o.a.p.pdmodel.PDDocumentCatalog
7.7.3 Page Tree see details below
7.7.3.2 Page Tree Nodes o.a.p.pdmodel.PDPageNode
7.7.3.3 Page Object o.a.p.pdmodel.PDPage
7.7.4 Name Dictionary
7.8 Content Streams and Resources see details below
7.8.2 Content Streams needs documentation
7.8.3 Resource Dictionaries o.a.p.pdmodel.PDResources
7.9 Common Data Structures see details below
7.9.2 String Object Types supported
7.9.3 Text Streams
7.9.4 Dates
7.9.5 Rectangles o.a.p.pmodel.common.PDRectangle
7.9.6 Name Trees o.a.p.pdmodel.common.PDNameTreeNode
7.9.7 Number Trees o.a.p.pdmodel.common.PDNumberTreeNode
7.10 Functions o.a.p.pdmodel.common.function
7.11 File Specifications o.a.p.pdmodel.common.filespecification
7.12 ExtensionsDictionary
8 Graphics o.a.p.pdmodel.graphics needs more details
8.1 Graphics Objects
8.3 Coordinate Systems
8.4 Graphics State
8.5 Path Construction and Painting
8.6 Colour Spaces o.a.p.pdmodel.graphics.color
8.7 Patterns o.a.p.pdmodel.graphics.pattern
8.8 External Objects o.a.p.pdmodel.graphics.xobject
8.9 Images o.a.p.pdmodel.graphics.xobject
8.10 Form XObjects o.a.p.pdmodel.graphics.xobject
8.11 Optional Content o.a.p.pdmodel.graphics.optionalcontent
9 Text
9.2 Organization and Use of Fonts
9.3 Text State Parameters and Operators
9.4 Text Objects
9.5 Introduction to Font Data Structures Introductory part, no implementation needed
9.6 Simple Fonts o.a.p.pdmodel.font see details below
9.6.2 Type 1 Fonts o.a.p.pdmodel.font.PDType1Font Multiple Master Fonts are not supported.
9.6.3 TrueType Fonts o.a.p.pdmodel.font.PDTrueTypeFont
9.6.4 Font Subsets Reading is supported. No subsetting will happen when writing new files.
9.6.5 Type 3 Fonts o.a.p.pdmodel.font.PDType3Font
9.6.6 Character Encoding o.a.p.encoding
9.7 Composite Fonts o.a.p.pdmodel.font
9.7.4 CIDFonts o.a.p.pdmodel.font.PDCIDFontType0Font, o.a.p.pdmodel.font.PDCIDFontType2Font
9.8 Font Descriptors
9.9 Embedded Font Programs
9.10 Extraction of Text Content
10 Rendering
11 Transparency
12 Interactive Features
12.2 Viewer Preferences org.apache.pdfbox.pdmodel.interactive.viewerpreferences
12.3 Document-Level Navigation