Postscript- und PDF-Dokumente führen Zusatzdaten mit, die Aufschluss über das Dokument und dessen Autor geben. Diese Meta-Informationen lassen sich auch setzen und bearbeiten.
Serie Postscript/PDF-Tools
| Teil 1 | Anzeigen und Konvertieren | LU 08/2009, S. 78 | https://www.linux-community.de/artikel/19014 |
| Teil 2 | Zerlegen und Zusammensetzen | LU 09/2009, S. 82 | https://www.linux-community.de/artikel/17410 |
| Teil 3 | Mehrfachdruck und Poster | LU 10/2009, S. 88 | https://www.linux-community.de/artikel/19376 |
| Teil 4 | Flyer, Booklets und Bücher | LU 11/2009, S. 88 | https://www.linux-community.de/artikel/19481 |
| Teil 5 | Analysieren und Extrahieren | LU 12/2009, S. 88 | https://www.linux-community.de/artikel/19635 |
| Teil 6 | Drehen und Skalieren | LU 01/2010, S. 90 | https://www.linux-community.de/artikel/20046 |
| Teil 7 | Metadaten bearbeiten | LU 02/2010, S. 90 | https://www.linux-community.de/artikel/20357 |
In einem Postscript-File ist hinterlegt, mit welchem Programm die Datei erzeugt wurde, welchen Titel das Dokument trägt, aus wieviel Seiten es besteht und welches Seitenformat diese aufweisen. PDF-Dateien bringen noch zusätzliche Informationen mit: Etwa die Schlüsselworte für den Index sowie die Daten der Erstellung und des letzten Schreibzugriffs sowie anderes mehr. Um solche Metadaten aus Postscript-Files anzuzeigen, gibt es kein Werkzeug für die Kommandozeile.
Aus PDFs dagegen lassen sich die Informationen mit pdfinfo [2] und pdftk [3] auslesen. Die Metadaten lagern dabei in spezifischen Feldern im Dokument. Manche davon befüllen bereits die Programme, die das PDF erzeugen, mit mehr oder minder hilfreichen Angaben; bei anderen Feldern bleibt das dem Anwender überlassen.
Wir sehen uns daher im Folgenden eine Reihe von Programmen an und begutachten, welche Möglichkeiten sie bieten, um die Metadaten im Dokument zu beeinflussen.
OpenOffice
Zu jedem OpenOffice-Dokument können Sie zusätzliche Informationen speichern. Den entsprechenden Dialog erreichen Sie über den Menüpunkt Datei | Eigenschaften. Im Reiter Beschreibung lassen sich ein Dokumenttitel, das Thema sowie die Schlüsselwörter zur Indizierung sowie ein Kommentar ablegen. Speichern Sie das Dokument anschließend als PDF, landen die Eintragungen auch im PDF-Dokument (Abbildung 1).
Scribus
Das DTP-Programm Scribus [4] verwendet einen ganz ähnlichen Metadaten-Dialog wie OpenOffice (Abbildung 2). Sie erreichen ihn über den Eintrag Dokumentinformationen im Menüpunkt Datei. Exportieren Sie das erzeugte Dokument nach PDF, überträgt Scribus die Informationen auch in das neue PDF-File.
Inkscape
Das Standardformat, in dem Das Vektorzeichenprogramm Inkscape legt seine Zeichnungen standardmäßig im XML-Format SVG (“Scalable Vector Graphics”, [5]) ab. Daher bietet es sich an, alle Metadaten entsprechend den Dublin-Core-Vorgaben ([6],[7]) mit in der Datei abzuspeichern, so etwa auch die Nutzungsbedingungen.
Den Dialog dazu erreichen Sie über den Eintrag Dokument-Metainformationen im Menüpunkt Datei. Exportieren Sie die SVG-Abbildung nun in ein PDF-Dokument, enthält dieses auch alle entsprechenden Felder (Abbildung 3). Dabei fiel im Test auf, dass Inkscape einen falschen Zeitstempel generierte, der den Zeitpunkt des Exports um eine Stunde vorverlegt. Allerdings kam hier die inzwischen sozusagen historische Version 0.44 des Vektorgrafikprogramms zum Einsatz, möglicherweise ist dieser Fehler in neueren Inkscape-Releases bereinigt.
Krita
Um Bilddaten für den Vierfarbdruck vorzubereiten, bietet sich das KDE-Programm Krita [8] an, das die Farbmodelle RGB und CMYK unterstützt. Obendrein kann es auch Dateien öffnen und schreiben, die mittels Adobe Illustrator erzeugt wurden. Solche AI-Files basieren auf Postscript, verwenden jedoch nur eine Teilmenge der Postscript-Kommandos [9]. In Krita lassen sich über den Menüpunkt Datei | Dokumentinformationen als Dokumenteneigenschaften der Titel, das Thema sowie Schlüsselworte und ein Kommentar angeben (Abbildung 4).
LaTeX, Pdflatex, Lyx
Auch Textsatz-Experten, die mit einer TeX-Spielart arbeiten, können ihre Dokumente mit Zusatzinformationen anreichern. Hier gibt es sogar zwei Varianten, zwischen denen man wählen kann: Die erste basiert auf dem LaTeX-Paket hyperref, die zweite auf dem direkten Einfügen von PDF-Code in LaTeX-Dokumente.
Für Variante 1 ergänzen Sie die Präambel des LaTeX-Dokuments um einige Zeilen. Zunächst binden Sie das Paket hyperref ein (Abbildung 5, Zeile 1), anschließend legen Sie die Dokumenteninformationen (Zeile 3 bis 5) fest: den Autor (pdfauthor), die Schlüsselworte (pdfkeywords) und den Dokumententitel (pdftitle). Die jeweiligen Werte tragen Sie in geschweiften Klammern ein. Wie auch in Programmiersprachen üblich, trennen Kommas die einzelnen Zuordnungen.
Diese Zuweisungen packen Sie in den Container \hypersetup (Abbildung 5, Zeilen 2 und 6) und übersetzen das LaTeX-File dann entweder mit pdflatex oder der Kombination aus latex und dvipdf. Eine nachfolgende Auswertung mittels pdfinfo zeigt die korrekt befüllten Meta-Tags (Abbildung 6).

hyperref zum Einbinden von Meta-Informationen.” width=”300″ height=”100″ />
Abbildung 5: In LaTeX nutzen Sie das Pakethyperref zum Einbinden von Meta-Informationen. Variante 2 basiert darauf, in das LaTeX-File native PDF-Anweisungen einzutragen. Dazu dient der Container \pdfinfo. In Abbildung 7 sehen Sie als Zusatzinformationen Autor (/Author) und Titel (/Title) sowie das Datum der Erzeugung (/CreationDate), das Thema (/Subject) und die Schlüsselworte (/Keywords). Die jeweiligen Werte folgen nach den Meta-Tag-Bezeichnern in runden Klammern.
Der Wert für das Datum der Erzeugung folgt dem Schema JJJJMMTTHHMMSS, wobei J dem Jahr entspricht, M dem Monat, T dem Tag sowie H, M und S den Stunden, Minuten und Sekunden. Das Dokument aus Abbildung 7 ist folglich am 14. Dezember 2009 um 16:00 Uhr (20091214160000) entstanden.
Nach der Variante 2 bestückte Dokumente können Sie nur mit pdflatex nach PDF übersetzen, da Sie ja direkt PDF-Code eingefügt haben. Werten Sie die erzeugte PDF-Datei mit pdfinfo aus, erhalten Sie eine Ausgabe wie in Abbildung 8.

Abbildung 8: Variante 2 geglückt: Das aus LaTeX erzeugte Dokument enthält alle gewünschten Informationen.
Problemfall Docbook
Bei Docbook handelt es sich um einen XML-Dialekt zum Beschreiben von Dokumentinhalten ([10],[11]). Aus einem Docbook-File lassen sich alle benötigten Formate zur Dokumentation einer Software erzeugen – auch in Buchform. Als Ausgabeformate unterstützt Docbook bislang HTML, LaTeX, ASCII-Text, Man-Pages, RTF sowie natürlich Postscript und PDF. Docbook kommt unter anderem beim KDE-Projekt zum Einsatz, wo die Entwickler damit die Programmdokumentation erstellen.
Docbook bringt eine Reihe von Dokumentenfeldern für Metatags mit. Dazu zählen beispielsweise articleinfo und bookinfo (Kennzeichnung des Informationsblocks des Dokuments), darunter author (Autor), copyright (Informationen zum Copyright und Urheberrecht) sowie title und subtitle (Haupt- und Untertitel). Für ein Buch sieht die XML-Struktur so aus wie in Abbildung 9 zu sehen.
Ein Docbook-File wandeln Sie mit docbook2ps nach Postscript und mit docbook2pdf in ein PDF-File um. Die Tools basieren auf der Scriptsprache (Open)Jade und stehen auch für die anderen, oben erwähnten Ausgabeformate zur Verfügung. Beide Werkzeuge benötigen das umzuwandelnde Docbook-File als Argument:
$ docbook2ps book.docbook $ docbook2pdf book.docbook
Dabei landen nun zwar die Meta-Tags selbst im PDF, nicht jedoch die Werte, mit denen Sie sie belegt haben.
Daher versuchten wir im Test, hier auf eine andere Methode auszuweichen: die Übersetzung mittels XSL-FO (“Extensible Stylesheet Language – Formatting Objects” [12],[13]). Dem liegt die Idee zugrunde, den XML-Dialekt Docbook unter Verwendung einer Stilvorlage in ein PDF zu übertragen. Diese Vorgehen setzt die beiden Werkzeuge xsltproc[14] und fop[15] aus den gleichnamigen Paketen voraus.
Sie können sich die Aufgabe erleichtern, indem Sie eine vorhandene Stilvorlage nutzen, die Docbook von Hause aus mitbringt und unter /usr/share/xml/docbook ablegt. Der Aufruf erfolgt in zwei Stufen – als Erstes erzeugen Sie mithilfe von Xsltproc und der Stilvorlage die Formatieranweisungen in einer FO-Datei. Die wiederum verwendet Fop, um damit das PDF-Dokument zu generieren (Listing 1)
$ xsltproc /usr/share/xml/docbook/stylesheet/nwalsh/fo/docbook.xsl book.docbook > book.fo $ fop book.fo -pdf book2.pdf
Das Ergebnis fällt aber sehr ernüchternd aus. Nicht nur, dass weniger Meta-Tags im PDF landen, als bei der Erzeugung mittels Docbook2pdf: Es werden auch hier keinerlei Informationen im PDF eingetragen.
Sollten Sie einen Trick kennen, um docbook, xsltproc und fop zum gewünschten Handeln zu überreden, bittet der Autor um einen entsprechenden Hinweis. Es würde die Nützlichkeit dieser Umwandlungsvariante enorm steigern.
PDF-Metadaten aktualisieren
Adobe hat das PDF-Format so konzipiert, dass während der Existenz des Dokuments die Datenintegrität gewahrt bleibt. Der Betrachter soll keinen Zweifel daran hegen müssen, dass ihn das empfangene Dokument unverändert erreicht hat. Ähnliches gilt für den Autor – er will meist sicher sein, dass der Empfänger das Dokument nicht nachträglich modifizieren kann.
Dass PDF diese Ansprüche bedient, mag dazu beigetragen haben, dass das Format sich als Quasi-Standard zum Datenaustausch etablieren konnte – etwa auch bei Belegen und Rechnungen. Obwohl Postscript ebenso “sicher” ist, kommt es für derartige Belange weitaus seltener zu Einsatz. Zumindest die Metadaten eines PDF-Dokuments lassen sich aber relativ einfach modifizieren. Das geschieht in drei Schritten: dem Auslesen der bisherigen Metadaten, dem folgenden Verändern der Daten und dem abschließenden Aktualisieren des PDFs.
Das Auslesen der PDF-Datei und das Speichern der Metadaten erledigen Sie mithilfe von pdftk. Der folgende Aufruf liest aus dem File RN2.pdf die Metadaten ein und speichert sie in der Datei daten:
pdftk RN2.pdf dump_data > daten
Öffnen Sie nun das File daten, erhalten Sie auf diesem Weg eine ganze Reihe von Informationen über das PDF-Dokument (Abbildung 10). Die Metadaten lagern jeweils in aufeinanderfolgenden Zeile in Schlüssel-Wert-Paaren. Zeilen, die mit InfoKey beginnen, enthalten einen Schlüssel, die Zeilen mit InfoValue den zugehörigen Wert.
Um nun etwa den Autorennamen zu ändern, suchen Sie im der Datei die Zeile InfoKey: Author und ändern in der darauffolgenden Zeile den Autorennamen wie gewünscht. Dann speichern Sie das File als neue_daten ab. Abschließend aktualisieren Sie das PDF mit den geänderten Metadaten:
pdftk RN2.pdf update_info neue_daten output RN3.pdf
Der Befehl schreibt die Änderungen in ein neues PDF-Dokument namens RN3.pdf. In Abbildung 11 sehen Sie, dass sich dort Unbekannt Erdritter als Autor des Dokumentes hinzugemogelt hat.
Wer genau hinschaut, bemerkt zudem eine Auffälligkeit: Das Erzeugungsdatum ist nicht mehr korrekt gesetzt. Ob das an einem Bug in Pdftk liegt oder andere Ursachen hat, ließ sich bis Redaktionsschluss nicht mehr abschließend klären. Wie auch immer: Noch ist das Schummeln leider nicht perfekt.
Glossar
-
RGB
-
Red, Green, Blue. Additives Farbmodell, das Farben durch das additive Mischen der drei Grundfarben Rot, Grün und Blau nachbildet.
-
CMYK
-
Cyan, Magenta, Yellow, Key. Subtraktives Farbmodell, das als technische Grundlage für den modernen Vierfarbdruck dient. “Key” bezieht sich auf den Schwarz-Anteil: Im Englischen heißt die schwarz druckende Offset-Platte “key plate”, weil an ihr die farbig druckenden Platten ausgerichtet werden.
-
RTF
-
Rich Text Format. Von Microsoft 1987 eingeführtes Dateiformat, das auf reinen Textdateien basiert. Wird in der Windows-Welt oft zum Datenaustausch eingesetzt.
Infos
[1] PS/PDF-Tricks: Frank Hofmann, “Scheibchenweise”, LinuxUser 12/2009, S. 88, https://www.linux-community.de/artikel/19635/
[2] Pdfinfo: http://linuxcommand.org/man_pages/pdfinfo1.html
[3] Pdftk: http://www.accesspdf.com/pdftk/
[4] Scribus: http://www.scribus.net/
[5] SVG bei Wikipedia: http://de.wikipedia.org/wiki/Scalable_Vector_Graphics
[6] DCMI: http://www.dublincore.org
[7] Dublin Core bei Wikipedia: http://de.wikipedia.org/wiki/Dublin_Core
[8] Krita: http://www.koffice.org/krita/
[9] AI-Format bei Wikipedia: http://de.wikipedia.org/wiki/Adobe_Illustrator
[10] Docbook: http://www.docbook.org
[11] Buch zu Docbook-XML: Lars Trieloff, “Docbook-XML”, mitp Verlag, Bonn 2005, ISBN 3-8266-1519-0
[12] Buch zu XML/XSL: Christine Kränzler, “XML/XSL für Buch und Web”, Markt+Technik Verlag, München 2002, ISBN 3-8272-6339-5
[13] XSL-FO bei Wikipedia: http://de.wikipedia.org/wiki/Extensible_Stylesheet_Language_%E2%80%93_Formatting_Objects
[14] Xsltproc: http://xmlsoft.org/XSLT/xsltproc2.html
[15] Apache Fop Project: http://xmlgraphics.apache.org/fop/














