Meta-Daten von PDFs bearbeiten
20. April 2011 um 12:12 | Veröffentlicht in Bash, GNU/Linux, LaTeX, Ubuntuusers | 9 KommentareNatü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 …
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
Hinterlasse eine Antwort zu Flo Antwort abbrechen
Erstelle kostenlos eine Website oder ein Blog auf WordPress.com.
Entries und Kommentare feeds.
Entschuldigung 🙂
Comment by noqqe— 20. April 2011 #
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
Comment by buur— 20. April 2011 #
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.
Comment by tok1hama1san— 20. April 2011 #
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}
Comment by Flo— 20. April 2011 #
Siehe Antwort zu buurs Kommentar.
Comment by tok1hama1san— 20. April 2011 #
Ok, ich war zu langsam 🙂
Comment by Flo— 20. April 2011 #
Gibt’s eigentlich schon eine gute GUI für pdftk? DAS wäre mal was wirklich nettes… So eine Art easytag für PDFs.
Comment by Meister0815— 20. April 2011 #
https://sourceforge.net/projects/pdfchain/
Comment by asdf— 20. April 2011 #
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…
Comment by hans wurst— 21. April 2011 #