The Extensions to PDF the File Says It Uses

Declare the extensions to the PDF format the document relies on, each under the prefix of whoever published it.

Summary

Beside its version, a file can say that it uses additions published after that version: a newer way of computing a fingerprint, say. Software checking the file then holds it to the rules of those additions too. That is why you declare only what the document really uses: an addition declared for nothing makes it judged against rules it was never written to.

Technically

Written at the top level of a request, under "extensions"

extensions writes the catalogue's /Extensions dictionary, one entry per developer prefix, each carrying the version it extends, its level and, where stated, its address and its revision. The document is written as a version no lower than base_version, and as PDF 2.0 where an extension states url or revision or shares its prefix with another; a request declaring a lower version is refused.

Request Schema

  • extensions — array, optional, empty by default.
  • extensions[].prefix — string, required. The prefix the developer registered: "ADBE", or "ISO_" for the extensions ISO publishes. An empty prefix, and "Type", are refused.
  • extensions[].base_version — string, required. The version of PDF the extension extends, written as version is.
  • extensions[].level — integer, required. The level that tells two extensions of one developer apart: 32001 for ISO/TS 32001.
  • extensions[].url — string, optional. Where the extension's documentation is published.
  • extensions[].revision — string, optional. What the developer says of the revision of the level, ":2022" for instance.

A signature field asking for one of the ISO/TS 32001 digests declares that extension on its own; nothing needs stating here for it.

A Whole Request That Creates a PDF

{
  "version": "2.0",
  "extensions": [
    {
      "prefix": "ISO_",
      "base_version": "2.0",
      "level": 32001,
      "url": "https://www.iso.org/standard/45874.html",
      "revision": ":2022"
    }
  ],
  "standard_fonts": [{ "name": "sans", "face": "helvetica" }],
  "items": [
    {
      "type": "text",
      "rect": { "llx": 60, "lly": 740, "urx": 535, "ury": 762 },
      "content": ["A file declaring the extension it uses"],
      "font": "sans",
      "font_size": 14
    }
  ]
}

The line that sends it, in three languages

The document as a whole

The Numbers Reading Software Shows A Hundred Letters in a Single File What the Document Says about Itself What the Document Says about Itself, Said Once Text Nobody Can Copy The Notes a Program Leaves in the File for Itself The Notes a Program Leaves on One Page The Data a Program Hangs on a Run of Ink A File Still Readable Decades from Now The Print Standard the Document Claims The Variable Print Standard the Document Claims The Password That Opens It, and What May Be Done with It An Invoice a Person and a Machine Both Read The Address Relative Links Are Read Against The PDF Version the File Declares What a Picture Says about Itself, and How It Is Read The Attachments the Document Carries Beside Its Pages Files the Document Names without Carrying The Attachments Shown as a Portfolio Which Attachments a Page Claims Which Attachments a Font Claims The Identity Card a Single Font Carries Which Attachments the Document's Card Claims A Document Card Written Elsewhere The Areas of a Page a Reader Measures In The Identity Card a Single Page Carries The Accessibility Standard the Document Claims The Standards the Finished Document Is Measured Against

Where to Go Next

Every JSON key of a request, in one page The other forty-one settings of a request

See the Prices See the Examples