Werkzeuge für PDF und Postscript (Teil 7)

Aus LinuxUser 02/2010

Werkzeuge für PDF und Postscript (Teil 7)

© Jag Arts, sxc.hu

Innere Werte

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).

Abbildung 1: Der Dialog für die Dokumenteneigenschaften in OpenOffice Writer.

Abbildung 1: Der Dialog für die Dokumenteneigenschaften in OpenOffice Writer.

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.

Abbildung 2: Der Dialog für die Dokumenteigenschaften in Scribus.

Abbildung 2: Der Dialog für die Dokumenteigenschaften in Scribus.

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.

Abbildung 3: Der Dialog für die Dokumenteigenschaften in Inkscape.

Abbildung 3: Der Dialog für die Dokumenteigenschaften in Inkscape.

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).

Abbildung 4: Der Dialog für die Dokumenteigenschaften in Krita.

Abbildung 4: Der Dialog für die Dokumenteigenschaften in Krita.

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).

Abbildung 5: In LaTeX nutzen Sie das Paket     <code srcset=

hyperref zum Einbinden von Meta-Informationen.” width=”300″ height=”100″ /> Abbildung 5: In LaTeX nutzen Sie das Paket hyperref zum Einbinden von Meta-Informationen.

Abbildung 6: So sieht die Auswertung des via LaTeX erzeugten PDF-Dokuments aus.

Abbildung 6: So sieht die Auswertung des via LaTeX erzeugten PDF-Dokuments aus.

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.

Abbildung 7: So reichern Sie das LaTeX-Dokument mit PDF-Kommandos für die Metainformationen an.

Abbildung 7: So reichern Sie das LaTeX-Dokument mit PDF-Kommandos für die Metainformationen an.

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.

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.

Abbildung 9: Eine mit Meta-Informationen versehene Docbook-Datei.

Abbildung 9: Eine mit Meta-Informationen versehene Docbook-Datei.

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)

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.

Abbildung 10: Mittels Pdftk aus einem PDF-Dokument ausgelesene Meta-Informationen.

Abbildung 10: Mittels Pdftk aus einem PDF-Dokument ausgelesene Meta-Informationen.

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.

Abbildung 11: Dieses PDF haben wir um den zusätzlichen Autor "Unbekannt Erdritter" ergänzt.

Abbildung 11: Dieses PDF haben wir um den zusätzlichen Autor “Unbekannt Erdritter” ergänzt.

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/

LinuxUser 02/2010 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben