Analysed · cleaned · edited · 8 writable fields
Removable: Document information, XMP.
- The document information dictionary (title, author, creator, producing software, dates) and the XMP packet are both read, and both are removed by a clean.
- Cleaning rewrites the file as a single generation rather than appending a correction. An appended update would leave the old values in the file, readable by anyone who looks at the raw bytes.
- Removing metadata does not change the text on the pages. A name printed in a document stays in the document.
- Editing writes the same value into every metadata store the file already has, so the two cannot end up disagreeing. A store the file did not have is never created.
- The modification date is never written unless you change it yourself. Stamping a file with the moment it was edited here would add exactly the kind of trace this site exists to remove.
- Signed, encrypted and Content-Credential-bearing PDFs are refused rather than rewritten or edited, each with an explanation of what rewriting would break.
- Nothing in a PDF is executed, resolved or followed. Embedded files, JavaScript and launch actions are reported as present and left untouched.
- Encrypted PDFs are reported as encrypted rather than guessed at: their metadata strings cannot be read without the password, and this build never attempts one.
- A PDF can hold several generations of itself. The current values are reported, and earlier generations are reported as present — because removing metadata from such a file would not remove them.
- The C2PA specification defines a PDF embedding (2.4, A.4, via embedded file streams). This build detects that a manifest is attached, from the marker the specification defines, but does not read it — and it refuses to clean a PDF while one is present rather than risk breaking bindings it cannot inspect.