Documents and mediaIntermediateDocument metadata

PDF Info dictionary and XMP metadata

PDF metadata in two places: the trailer Info dictionary (D: dates) and the catalog's XMP stream (ISO 8601 dates, document and instance IDs).

01Location

  • trailer /Info → document information dictionary
  • Catalog /Metadata → stream (/Type /Metadata /Subtype /XML) holding an XMP packet
  • Earlier XMP packets left by incremental updates later in the file

02Questions it answers

  • Which application created the original document and which produced the PDF?
  • When was the PDF created and last modified, and when was its metadata last changed?
  • Is this file a new incarnation of an earlier document (shared DocumentID, different InstanceID)?
  • Do the Info and XMP values agree?

03Format and versions

FormatInfo entries are PDF text strings; dates use 'D:YYYYMMDDHHmmSS' with an optional offset such as +HH'mm (ISO 32000-1 §7.9.4). XMP is RDF/XML encoded in UTF-8 inside the metadata stream (PDF 1.4+).
Applies toInfo dictionary in all PDF versions; XMP metadata streams from PDF 1.4. Mapping per Adobe XMP Specification Part 3.

04Key fields

FieldWhat it tells you
Info: Title, Author, Subject, KeywordsMap to dc:title, dc:creator, dc:description and pdf:Keywords in XMP.
Info: Creator ↔ xmp:CreatorToolApplication that created the original content.
Info: Producer ↔ pdf:ProducerSoftware that produced the PDF.
Info: Trapped ↔ pdf:TrappedTrapping status flag.
xmpMM:DocumentIDCommon identifier for all versions and renditions of a resource.
xmpMM:InstanceIDIdentifier of a specific incarnation, updated each time the file is saved.
xmpMM:OriginalDocumentID, xmpMM:DerivedFrom, xmpMM:HistoryLinks to the source resource and a list of high-level actions that produced this one.

05Timestamps

FieldEncodingNote
Info CreationDate, ModDatePDF date string 'D:YYYYMMDDHHmmSS±HH'mm'Only the year is mandatory; Chromium's parser assumes UTC when no offset is given.
xmp:CreateDate, xmp:ModifyDateISO 8601 subset (YYYY-MM-DDThh:mm:ss.sTZD)A missing time zone designator means the zone is unknown and should not be assumed.
xmp:MetadataDateISO 8601 subsetWhen metadata was last changed; should be the same as or later than xmp:ModifyDate.

Decode raw values with the Timestamp decoder and convert local wall-clock times with the Local time to UTC.

06Examination workflow

  1. Hash the file and locate every XMP packet and every Info dictionary, including those from incremental updates.
  2. Decode Info dates with their offsets and XMP dates with their designators; note values that lack a zone.
  3. Compare Info and XMP pairs (CreationDate/xmp:CreateDate, ModDate/xmp:ModifyDate, Creator/xmp:CreatorTool, Producer/pdf:Producer).
  4. Use DocumentID and InstanceID to relate the file to other copies or versions.

07Interpretation pitfalls

  • Info and XMP can fall out of sync when software unaware of XMP edits Info; Acrobat resolves this by comparing ModDate with xmp:MetadataDate.
  • Incremental saves append new packets without removing old ones; a naive search can read an outdated packet.
  • xmp:ModifyDate is typically set before the file is saved and need not match the file system modification time.
  • All of these values are writable by any PDF tool and do not authenticate the document.

09Sources

  1. XMP Specification Part 1 — Data model, serialization and core properties Adobe (XMP-Toolkit-SDK, GitHub) · checked 2026-10-14
  2. XMP Specification Part 2 — Additional properties Adobe (XMP-Toolkit-SDK, GitHub) · checked 2026-10-14
  3. XMP Specification Part 3 — Storage in files Adobe (XMP-Toolkit-SDK, GitHub) · checked 2026-10-14
  4. pdf.js — src/core/document.js (documentInfo) Mozilla (GitHub) · checked 2026-10-14
  5. pdf.js — src/core/catalog.js (Metadata) Mozilla (GitHub) · checked 2026-10-14
  6. Chromium source — pdf/pdf_utils/dates.cc (ISO 32000-1 §7.9.4 date parsing) The Chromium Authors (GitHub mirror) · checked 2026-10-14
  7. ISO 32000-1:2008 — Document management — Portable document format (Adobe-hosted copy) Adobe / ISO