PDF-Datei normalisieren (ID und Zeitstempel entfernen)

Ich erzeuge in verschiedenen Workflows PDF-Dateien und checke diese in ein git-Repository ein. Leider ändern sich PDF-Dateien immer, selbst wenn der Inhalt 100% gleich ist, so dass die Änderung in git jedes mal neu in committed werden muss. Da PDF-Dateien als Binärdateien interpretiert werden, ist nicht mal ersichtlich was sich am PDF geändert hat. Das Problem lässt sich leicht reproduzieren, indem zweimal hintereinander eine PDF-Datei erzeugt wird (z.B. mit LaTeX, Pandoc, GraphViz, LilyPond…) und die Checksumme verglichen werden (z.B. mit md5sum).

Ich würde gerne im Workflow nach der Erzeugung der PDF-Datei diese „normalisieren“, dass immer die gleiche Datei rauskommt, also quasi ein Reproducible Build. Kennt jemand dafür ein Tool? Meinen Nachforschungen nach liegt das Problem an folgenden Metadaten-Feldern im PDF:

  • Document ID (UUID)
  • File Identifier
  • Creation Timestamp
  • Modification Timestamp

Der Versuch mit exiftool -DocumentID= -CreateDate= -ModifyDate= die UUID und Timestamps zu löschen reichte leider nicht aus, da die entsprechenden XMP Tags anscheinend an verschiedenen Stellen in der PDF-Datei vorkommen können und exiftool nicht alle anfasst.

Nur ein kleiner Hinweis: Du sollest auch das xref-Feld Content Creator mit betrachten, dort steht u.U. auch ein Timestamp mit drin.