Mit Hilfe von PDFmarks und Ghostscript lassen sich Metadaten oder Strukturinformationen zu einem PDF-Dokument hinzufügen. Im Folgenden ist beschrieben, wie man dabei vorgehen muss.
PDFmarks ist eine Technik, die zum PDF (Portable Document Format) gehört und die zum Speichern von Metadaten wie Autor oder Titel, aber auch Strukturinformationen wie Lesezeichen oder Hyperlinks verwendet wird. Grundlage dieser Dokumentation ist die Quick Reference on often used Ghostscript PDF options by Milan Kupcevic. Details sind in der pdfmark-Referenz zu finden.
Die PDFmarks-Datei ist eine einfache ASCII-Textdatei, die den Konventionen des PDF genügt, d. h. Zeichenketten (Strings) sind in Klammern gefasst, also im Format PDFDocEncoding (Zeichenwerte außerhalb von ASCII werden als okale Escapes notiert, z. B. \351 für é) oder UTF-16-Strings in spitzen Klammern. Der Aufbau einer solchen Datei sieht so aus:
[ /Title (Document title) /Author (Author name) /Subject (Subject description) /Keywords (comma, separated, keywords) /ModDate (D:20061204092842) /CreationDate (D:20061204092842) /Creator (application name or creator note) /Producer (PDF producer name or note) /DOCINFO pdfmark % PDFmarks-Datei Template von http://web.archive.org/web/20071009181429/milan.kupcevic.net/ghostscript_ps_pdf
Der Präfix D:
für ein Datum ist eigentlich optional, allerdings zeigen PDF-Viewer wie Mozilla Firefox nur Daten mit dem Präfix an.
Das Datumsformat der Felder ModDate und CreationDate lässt sich formal beschreiben als
YYYYMMDDhhmmss
Dabei bedeutet YYYY die vierstellige Jahreszahl, MM ist der Monat, DD der Tag, hh die Stunde, mm die Minute und ss die Sekunde. Ohne zusätzliche Angabe einer Zeitzone wird diese Zeichenkette als UTC-Zeitangabe interpretiert.
Die Abweichnung von UTC kann als Differenz am Ende des Formatstrings angegeben werden, z. B. +0200
für MESZ (Mitteleuropäische Sommerzeit).
Diese Felder sind laut Referenz wie folgt definiert:
Mit dem Opensource-Programm Ghostscript kombiniert man anschließend die gewünschte PDF-Datei mit den PDFmarks:
gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=withmarks.pdf nomarks.pdf pdfmarks
Ghostscript schreibt für sich die Producer-Information, d. h. ein entsprechender Eintrag in der PDFmarks-Datei wird nicht berücksichtigt.