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.