These documents complement the core sources: they help explain the origin of definitions, verify corrections and distinguish the PDF format from the behavior of a particular Acrobat version. They concern PDF 1.7 and belong in the PDFToolkit/pdf repository.

The active definition reference remains ISO 32000-1:2008, with the extensions in the Adobe supplement. Archiving the documents below changes neither generated classes, version rules nor mechanism implementation status. The coverage guide distinguishes these dimensions.

Retained documents

Page numbers in this guide refer to physical PDF pages, starting at 1. The reference catalogue records their identities, sizes, SHA-256 hashes and relationships between attachments. Files retain their original names and bytes in Git and can be downloaded from the documentation. They are excluded from Composer archives so installing the library does not add these documentation volumes.

Document Edition and pages Purpose
PDF Reference, version 1.7 Sixth edition, November 2006; 1,310 pages Adobe reference preceding ISO 32000-1, with examples, historical notes and implementation notes.
Errata for the PDF Reference October 2007; 18 pages Corrections to the sixth edition, to compare with ISO rules and executable checks.
PDF Redaction: Addendum November 2006; 4 pages Introduction of Redact annotations and the distinction between designating an area and destroying its content.
PDF Reference and Related Documentation Acrobat SDK 8.1 portfolio, April 2007 cover; 1 page and 4 embedded PDFs Original container grouping the previous three documents and Acrobat 8.1 implementation notes.

The PDF Association's historical archive places the 2006 Adobe reference and its errata before the standardization of PDF 1.7 by ISO in 2008. Adobe pagination and table numbers must not be reused as ISO references.

The ISO foreword, PDF page 6, explains the revision and adoption of the November 2006 Adobe reference. The latter remains useful for its examples and Annex H on implementations. PDF pages 25–27 already distinguish the format from products that process it. Its Annex G examples, PDF pages 1,057 and 1,058, warn that illustrated stream lengths and offsets may be inaccurate: they require reconstruction before becoming executable fixtures.

The portfolio and its duplicates

The portfolio's cover page lists its four embedded documents. The portfolio itself is not an additional 1,310-page reference.

Name in the portfolio Embedded document pages Relationship to retained files
pdf_reference.pdf 1,310 Byte-for-byte identical to pdf_reference_1-7.pdf.
PDF17Errata.pdf 18 Byte-for-byte identical to pdf_17_errata.pdf, dated October 2007.
pdf_reference_addendum_redaction.pdf 4 Byte-for-byte identical to pdf_reference1-7_addendum_redaction.pdf.
pdf_implementation.pdf 11 April 2007 Acrobat 8.1 notes; no separate file among the four supplied sources.

The catalogue retains these correspondences. The portfolio's April 2007 cover and its attached errata's October 2007 edition are distinct dates. A reader displaying only the cover may not show attachments; use a reader capable of opening them to consult the implementation notes. Their pagination starts at 1 inside the attachment.

Using errata for audits

The errata correct the 2006 Adobe reference. They must not automatically replace ISO tables or newer Adobe extensions. Each correction must be matched with its ISO clause, the object that implements it and evidence checking its behavior.

Examples of explicitly corrected topics:

  • Page 3: unique dictionary keys, position of the Crypt filter and the distinction of its decryption key.
  • Pages 4–6: direct, unencrypted file identifiers, encryption exclusions, permissions, cryptographic filter names and sizes.
  • Pages 6 and 7: prohibition of an empty Contents array, date syntax, uncompressed embedded-file size and collection data types.
  • Pages 8 and 9: T* line movement and organization of embedded OpenType programs.

This topic inventory does not declare an exhaustive audit of all 18 pages complete. A rule already present in ISO 32000-1 may have a core definition without all its constraints being checked. Current validations and remaining work are listed in the coverage guide.

Concrete correspondences have been checked in the existing code: dictionary keys are unique; an explicit Crypt filter is unique and comes first; its key follows the explicit encryption-backend path. EmbeddedFileParameters calculates size from uncompressed bytes, and PartialFieldName rejects a dot in a partial name (errata page 12). These checks concern their stated domain, not every variant of an arbitrary document.

The audit also led to a correction in core 0.5.2: OutlineDictionary now omits the root Count when all top-level bookmarks have expanded=false (errata page 10 and ISO table 152, PDF page 376). An open descendant hidden beneath a closed parent does not trigger this entry. An explicitly open top-level bookmark retains the visible-count calculation; signed item counts do not change. This check concerns those explicit states without redefining how leaves are opened.

Preserving differences between editions

Errata page 13 removes bit 7, DigestMethod, from signature seed flags. ISO table 234, PDF page 455, retains it: the core follows that ISO contract. Similarly, errata page 14 deprecates old signature-reference digests, whereas ISO table 253, PDF pages 477 and 478, retains an optional DigestMethod. These differences justify explicit source references rather than globally applying a 2007 correction.

Redaction: annotating and removing

Addendum pages 2–4 describe two distinct steps. A Redact annotation designates content to remove and allows selected areas to be reviewed. Applying that annotation must then remove the affected content and the annotation, and produce the replacement appearance.

The core already contains the redaction annotation dictionary, from ISO table 192, PDF pages 421 and 422. The addendum's eight entries (Subtype, QuadPoints, IC, RO, OverlayText, Repeat, DA and Q) appear in that definition. This allows dictionary construction; it is not a redaction application engine.

Addendum page 3 requires removal of the data, including the affected portion of an image: a mask or opaque rectangle is insufficient. Metadata and other forms of content must also be examined. An incremental update preserves the bytes of previous revisions and therefore cannot ensure this destruction on its own.

A future redaction processor must build on reading, interpreting and rewriting content in a dedicated module. Redact objects, coordinates and PDF appearances remain in the core. Adding documentary references does not implement this processor.

Acrobat implementation notes

The pdf_implementation.pdf attachment documents Acrobat 8.1 behavior: PRC on pages 6–8, U3D on pages 8 and 9, XFA on pages 9 and 10, collections on page 10 and discontinued SVG slide shows on page 11. These topics also appear in the retained Adobe supplement, notably PDF pages 55–58 for PRC and its product notes.

These notes explain historical behavior rather than imposing Acrobat 8.1's limits on all PDFs. The format can describe an object or action without the core executing its script, rendering its media or processing its XFA.

Checking the sources

After installing the Python validation dependencies:

python tools/validate_adobe_references.py

Validation uses an independent reader to check page counts, the four attachments and their correspondences, as well as original sizes and hashes. Quality and documentation workflows run it before publication. Source-file validation is not evidence of coverage of the algorithms they describe.

Definitions · Coverage · Adobe supplement

Guide source at the documented commit ↗