Meta-Daten von PDFs bearbeiten

April 20, 2011 um 12:12 pm | Veröffentlicht in Bash, GNU/Linux, LaTeX, Ubuntuusers | 9 Kommentare

Natürlich. Da will man mal was über ein Tool schreiben und dann kommen einem andere zuvor.🙂 Deswegen werde ich nicht das Tool allgemein beschreiben sondern nur dessen Einsatz zum Manipulieren von PDFs.

Vor kurzem war es notwendig, dass ich bei einem in LaTeX erstellten PDF die Metadaten etwas manipuliere. Um genau zu sein ging es um den Eintrag zu "Autor". Ich hatte in LaTeX auf die schnelle keine geeignete Möglichkeit gefunden die Titelseite nach meinen Wünschen umzuformatieren, also habe ich, nach einem Zeilenumbruch, zusätzliche Information in den \author{}-Befehl geschrieben. Diese Information sollte jedoch nicht in den Meta-Daten sichtbar sein.

Meine Lösung, die auf Anhieb funktioniert hat (wow …): pdftk.

Zuerst müssen wir die Meta-Daten aus dem PDF extrahieren. Das funktioniert mit folgendem Befehl:
pdftk <PDFName>.pdf dump_data output <InfoDatei>.info

Es wird also die Datei <PDFName>.pdf hergenommen und mittels dump_data dessen Meta-Daten herausgelöst. Gespeichert werden diese Daten nun in <InfoDatei>.info. Diese Textdatei liegt nun im selben Ordner wie das PDF und kann mit jedem beliebigen Texteditor bearbeitet werden. Sobald man damit fertig ist muss man die Meta-Daten wieder zurückschreiben. Das funktioniert so:
pdftk <PDFName>.pdf update_info <InfoDatei>.info output <PDFName>_clean.pdf

Hier wird wieder die Datei <PDFName>.pdf hergenommen und mittels update_info dessen Meta-Daten auf den neuesten Stand gebracht. Die Datei aus der pdftk diese neuen Informationen liest geben wir als <InfoDatei>.info an. Per output wird das Ergebnis in <PDFName>_clean.pdf geschrieben. Dies deswegen, weil ich nicht weiß ob es Probleme macht direkt wieder in die Datei zu schreiben aus der man gerade liest. Man kann aber dann einfach das alte PDF löschen und das Neue umbenennen.

Der Einfachheit halber habe ich das ganze in ein Skript gegossen:

#!/bin/bash

FILENAME=$1
FILENAME=${FILENAME%.*}

pdftk $FILENAME.pdf dump_data output $FILENAME.info

#<InfoDatei>.info bearbeiten
vim $FILENAME.info

pdftk $FILENAME.pdf update_info $FILENAME.info output ${FILENAME}_clean.pdf

echo "Cleaning up"
rm -f $FILENAME.pdf
rm -f $FILENAME.info
mv -f ${FILENAME}_clean.pdf $FILENAME.pdf

Das Skript wird mit <Skriptname>.sh <PDFDatei>.pdf aufgerufen. Zuerst wird der Name der PDF-Datei (das erste Argument des Skripts) in der Variable FILENAME gespeichert. Dann kürzen wir diesen Namen um das Suffix .pdf. Als Nächstes wird pdftk mit den besprochenen Parametern aufgerufen. Der Einfachheit halber wird überall der Name der übergebenen PDF-Datei verwendet. Statt vim $FILENAME.info kann natürlich jeder beliebige Texteditor verwendet werden. Sobald der Editor wieder geschlossen wurde geht die Verarbeitung weiter. Jetzt wird die bearbeitete Meta-Information wieder mit dem PDF kombiniert. Zum Schluss werden die alte PDF-Datei und die info-Datei gelöscht und die neue PDF-Datei wird so benannt wie die Alte.

Kurz und schmerzlos. Ich muss zugeben, ich verwende dieses Skript auch häufig um damit PDFs zu bearbeiten die ich von anderen Leuten bekomme. Mich stört es einfach wenn mir Okular im Titel anzeigt: Irgendein Titel – Microsoft Word

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

=-=-=-=-=
Powered by Blogilo

9 Kommentare »

RSS feed for comments on this post. TrackBack URI

  1. Entschuldigung🙂

  2. Da hilft die Anleitung von Hyperref:
    http://www.tug.org/applications/hyperref/manual.html
    EInfach
    \usepackage[pdftitle=DerTitel,pdfauthor=Verfasser]{hyperref}
    oder später mittels
    \hypersetup{pdfauthor=Verfasser}
    Gruß
    buur

    • Das Problem war nicht, dass kein Autor angezeigt wurde, sondern dass zuviel Information angezeigt wurde die ich, weils leichter ging, einfach in den \author{}-Befehl geschrieben habe.

  3. In LaTeX kannst Du sehr viele PDF-Eigenschaften mit dem Paket hyperref (http://en.wikibooks.org/wiki/LaTeX/Hyperlinks) einstellen.

    Um den Autor zu benennen, funktioniert dann \usepackage[pdfauthor={Max Mustermann}]{hyperref}

    • Siehe Antwort zu buurs Kommentar.

      • Ok, ich war zu langsam🙂

  4. Gibt’s eigentlich schon eine gute GUI für pdftk? DAS wäre mal was wirklich nettes… So eine Art easytag für PDFs.

  5. Das sieht ja alles wunderschön aus. Leider gibt es aber einen kleinen Haken dabei. Bei Dateinamen mit einem Leerzeichen (und wahrscheinlich auch mit anderen zu escapenden Sonderzeichen) versagt das Skript leider. Wahrscheinlich muss man nur ein paar Quotes einfügen, aber da bin ich irgendwie zu faul für…


Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Erstelle eine kostenlose Website oder Blog – auf WordPress.com.
Entries und Kommentare feeds.

%d Bloggern gefällt das: