Ein Multifunktionsgerät für die Arbeit mit PDF-Dateien

Aus LinuxUser 08/2005

Ein Multifunktionsgerät für die Arbeit mit PDF-Dateien

PDFs ausgereizt

Zur Verarbeitung der Papierberge im Büro nutzen wir die moderne Bürotechnik. Wir müssen Dokumente abheften und entheften, kopieren, neu zusammenstellen, abstempeln, untersuchen oder klassifizieren. Bei der täglichen Arbeit mit elektronischen Dokumenten kann ein ganz spezielles Multifunktionsgerät verwendet werden: Pdftk ­ das PDF-Toolkit.

Jeder LaTeX-Anwender muss oft eigene und fremde PDF-Dokumente weiterverarbeiten. Zu den zahlreichen verfügbaren Programmen zur PDF-Bearbeitung gehören beispielsweise GhostScript, die iText-Bibliothek und Xpdf.

Seit Ende 2003 gibt es zudem Pdftk, ein komfortables Kommandozeilenprogramm zur (Stapel-)Verarbeitung von PDF-Dateien. Wer an vielen PDF-Dateien gleiche oder ähnliche Operationen ausführen muss, sollte Pdftk als Werkzeug in die engere Wahl ziehen. Aber auch als Nutzer graphischer Oberflächen kann man sich dieses Programm dienstbar machen. In KDE gibt es dazu spezielle Konqueror-Menüs, unter Windows 2000 oder XP kann man Batch-Dateien mit Pdftk-Befehlen zum Kontextmenü hinzufügen.

Installation und Einsatz

Sie können das PDF-Toolkit in der aktuellsten Version von einer der Webseiten des Autors Sid Steward [7] herunterladen. Er bietet das unter der GPL stehende Programm unter anderem für Linux, Mac OS X (Panther), FreeBSD, Solaris und Windows an. Die plattformspezifische Installation erweist sich auf den getesteten Plattformen (Debian, SuSE Linux, Windows 2000, Windows XP) als unkompliziert.

Nach der Installation rufen Sie Pdftk aus einer Shell (oder der Windows-Eingabeaufforderung) auf. Der Befehl pdftk --help listet alle Kommandos und Optionen des Programms samt kurzer Hilfetexte auf. In der Tabelle “Pdftk-Operationen” finden Sie die wichtigsten Operationen sowie einige Erläuterungen dazu. Der generelle Aufruf des Programms zur Bearbeitung von PDF-Dateien lautet:

pdftk Eingabedatei(en) Operation [Option] output Ausgabedatei [Passworte] [Benutzerrechte]

Pdftk-Operationen

Operation   Erläuterung
attach_files   Fügt Dateien als Anlage an ein PDF-Dokument an. Die PDF-Datei kann auf diese Weise zu einer Archivdatei erweitert werden.
background   Versieht jede Seite eines PDF-Dokuments mit einem Wasserzeichen. Auf leere Flächen kann auch eine Art Stempel gesetzt werden.
burst     Zerlegt ein PDF-Dokument in einzelne Seiten.
cat     Fügt mehrere Dateien oder mehrere Seiten aus verschiedenen PDF-Dokumenten zu einer neuen PDF-Datei zusammen.
dump_data   Gibt Informationen zu einer PDF-Datei auf die Standardausgabe aus.
dump_data_fields Gibt Informationen zu den Formularfeldern einer PDF-Datei auf die Standardausgabe aus.
fill_form   Füllt PDF-Formulare aus oder verbindet die Formulardaten mit dem Dokument.
unpack_files   Entpackt die angefügten Anlagen eines PDF-Dokuments in ein Verzeichnis.
update_info   Aktualisiert die Meta-Informationen (z.B. Autor, Titel, Thema) in einer PDF-Datei.

Die Eingabedateien müssen stets im PDF-Format vorliegen. Für spezielle Operationen benötigt das Tool zusätzlich Textdateien in bestimmten Formaten. pdftk gibt eine oder mehrere PDF-Dateien und in bestimmten Fällen auch Textdateien aus.

Im folgenden haben wir einige Beispiele zusammengestellt, die einige interessante Anwendungen von pfdtk zeigen. Sie leuchten jedoch bei weitem nicht alle Möglichkeiten des Programms aus. Alle Beispieldateien zu diesem Artikel stehen Ihnen unter [2] für eigene Versuche mit pdftk zur Verfügung.

Sie können PDF-Dateien wie eine E-Mail durch Anhänge (attachments) ergänzen. Das Abspeichern der Anhänge beim Empfänger erfolgt zum Beispiel mit dem Adobe Reader (ab Version 6). Pdftk ermöglicht sowohl das Anhängen von Dateien an ein PDF-Dokument als auch das Abspeichern der Anhänge. Bis zum kürzlichen Erscheinen des Adobe Reader 7 stellte das für Linux-Anwender die einzige Möglichkeit dar, Attachments abzuspeichern.

Solche Anhänge kann man zum Beispiel nutzen, um einem PDF-Dokument Quelltexte oder einen Auszug aus der Literaturdatenbank hinzuzufügen. Man könnte auch Messdaten anhängen, um auf diese Weise die Aussagen des Dokuments zu ergänzen. Im folgenden Beispiel soll eine PDF-Datei mit ihrem Quelltext gemeinsam weitergegeben werden. Um die Quelldatei mit Pdftk in das PDF einzubinden, fügen Sie dies mit

pdftk Formular.pdf attach_files Formular.tex output Neu.pdf

an das PDF-Dokument an. Alternativ können Sie die Datei mit Hilfe von pdfLaTEX und attachfile an die fertige PDF-Datei anhängen. Der Empfänger entpackt den Quelltext und andere Anhänge seinerseits mit Pdftk in ein Verzeichnis:

pdftk Beispiel_anhang.pdf unpack_files output Source

In diesem Beispiel speichert Pdftk die Anhänge in das Verzeichnis Source ab. Ein solches Verzeichnis anzugeben, macht immer dann Sinn, wenn mehrere Dateien angehängt sein könnten.

Wasserzeichen und Hintergrundfarbe

Ähnlich wie mit dem LaTeX-Paket eso-pic kann man auch mit Pdftk Wasserzeichen in ein Dokument einbringen. Dazu dient die Operation background. Sie erlaubt zudem, das PDF nachträglich mit einem farbigen Hintergrund zu versehen.

Die als Wasserzeichen genutzte Grafik muss als PDF-Datei vorliegen. Sie können Sie beispielsweise in einem Vektorgrafikprogramm erstellen oder auch mit PostScript programmieren. Weist das Wasserzeichen nicht dieselbe Größe wie das Dokument aufweist, skaliert Pdftk es. Möchten Sie ein Dokument mit dem Stempel “ENTWURF” versehen, erstellen Sie zunächst ein PDF im entsprechenden Seitenformat und rufen dann Pdftk wie folgt auf:

pdftk Beispiel.pdf background Entwurf.pdf output Entwurf1.pdf

Auf unbeschriebenen Teilen des Dokuments wirkt das Wasserzeichen wie ein Stempel. Ein elektronisches Blatt Papier mit einer passenden Hintergrundfarbe kann man zum Beispiel in einer kleinen EPS-Datei erstellen. Die entsprechenden PostScript-Befehle für ein A4-Blatt lauten:

%!PS-Adobe-2.0
%%BoundingBox: 0 0 595 842
0.95 0.95 0.90 setrgbcolor
0 0 moveto 595 0 rlineto 0 842 rlineto -595 0 rlineto
closepath fill
showpage

Änderungen der Hintergrundfarbe können Sie im EPS-Code sehr leicht vornehmen. Nun wandeln Sie die EPS-Datei mit epstopdf in eine PDF-Datei um und fügen Sie über Pdftk als Hintergrund ein:

pdftk Beispiel.pdf background Bg.pdf output Bsp_farbig.pdf

Zerlegen und Zusammensetzen von PDF-Dateien

Mit der Operation burst zerlegen Sie eine PDF-Datei in einzelne Seiten. Dazu geben Sie einen Stammnamen für die einzelnen Seiten sowie ein Nummerierungsformat an:

pdftk Beispiel.pdf burst output Seite%03d.pdf
pdftk Beispiel.pdf burst output ./Seiten/Seite%03d.pdf

Die Namen der einzelnen Dateien enthalten in beiden Beispielen eine dreistellige Seitenzahl. Im zweiten Beispiel schreibt Pdftk die PDF-Dateien in ein existierendes Unterverzeichnis.

Mit der Operation cat fasst Pdftk mehrere PDF-Dateien zu einem neuen Dokument zusammen. Sie können die Dateinamen der einzelnen Quelldateien auch mit Jokerzeichen angeben.

pdftk Beispiel.pdf Formular.pdf Anhang.pdf cat output Beispiel_gesamt.pdf
pdftk D=Deckblatt.pdf B=Beispiel.pdf cat D B1-4 output Beispiel_deckblatt.pdf

Wie das zweite Beispiel L fettdemonstriert, arrangieren Sie mit der Operation cat bei Bedarf Dokumente auch neu, indem Sie Teile einer PDF-Datei mit Teilen eines anderen PDFs zu einem neuen Dokument verknüpfen.

Abfragen und Aktualisieren der Meta-Informationen

Die meisten PDF-Dateien enthalten Meta-Informationen, etwa zum Autor, dem Thema der Datei oder der zum Erstellen verwendete Software. Mit Pdftk können Sie sich diese Angaben auf die Standardausgabe ausgeben oder in eine Datei speichern lassen:

pdftk Beispiel.pdf dump_data output Info.txt

Nach diesem Aufruf enthält die Datei info.txt alle Meta-Informationen des PDF-Dokuments. Diese setzen sich jeweils aus einem Schlüsselfeld und dem zugehörigen Wert zusammen (siehe Listing 1). Vor der Weitergabe oder Archivierung von PDF-Dokumenten ist es oft sinnvoll, die Meta-Daten zu aktualisieren. Pdftk ermöglicht dies, ohne dazu das Dokument neu erstellen oder übersetzen zu müssen.

Zum Aktualisieren der Meta-Informationen erstellen Sie eine Textdatei mit Meta-Daten, die etwa folgenden Aufbau haben (die Darstellung ist stark gekürzt):

InfoKey: Creator
InfoValue: TeX
InfoKey: Firma
InfoValue: Mustermann und Söhne

Listing 1

Typische PDF-Metadaten

InfoKey: Title
InfoValue: Arbeit mit Pdftk
InfoKey: Subject
InfoValue: Pdftk-Beispiele aus der Praxis
InfoKey: Keywords
InfoValue: pdftk, iText, OpenSource-Anwendungen
InfoKey: Author
InfoValue: Stefan Lagotzki
InfoKey: Ort
InfoValue: Dresden

Sie müssen in diese Datei nicht alle Informationen aufnehmen, die man mit einer PDF-Datei speichern kann. Bereits belegte FeldL fetter bleiben beim Update unberührt, wenn sie in der Textdatei nicht enthalten sind. Sie können auch zusätzliche Schlüsselfelder (im Beispiel Firma) definieren und mit Werten belegen. Das Aktualisieren der Meta-Informationen erfolgt mit dem Aufruf:

pdftk Beispiel.pdf update_info Info.txt output Bsp_meta.pdf

Ausgabedatei und Eingabedatei dürfen nicht den selben Namen tragen. Sie müssen also manuell oder über ein kleines Shell-Skript die Ausgabedatei anschließend entsprechend umbenennen.

Ausfüllen eines PDF-Formulars

PDF-Dateien können Formulare mit benannten Formularfeldern enthalten. Eine Einführung in das Thema PDF-Formulare findeL fettn Sie in [3]. Für PDF-Formulardaten hat die Firma Adobe das proprietäre, aber offene FDF-Format definiert. Das folgenden Beispiel stellt eine kleine FDF-Datei dar:

%FDF-1.2
1 0 obj <\<><\<>
/FDF <\<><\<> /Fields [
<\<><\<> /V (Dresden)/T (ort) <\>><\>>
<\<><\<> /V (Stefan Lagotzki)/T (autor)<\>><\>>
]/F (formular.pdf) <\>><\>>
<\>><\>>
endobj
trailer
<\<><\<>
/Root 1 0 R
<\>><\>>
%%EOF

In diesem Beispiel bezeichnet T den Titel und V den Wert eines Formularfelds. Nun fügen Sie die PDF-Datei mit der FDF-Datei zusammen. Dabei können Sie entscheiden, ob die Formulardaten noch editierbar sein oder endgültig mit dem Dokument verbunden werden sollen:

pdftk Formular.pdf fill_form Bsp.fdf output Edit.pdf
pdftk Formular.pdf fill_form Bsp.fdf output End.pdf flatten

Im ersten Fall lässt sich das Ergebnis noch editieren. Im zweiten Fall sorgt die Option flatten dafür, dass die Inhalte der Formularfelder endgültig mit der PDF-Datei verbunden werden.

Diese Fähigkeiten ermöglichen, Pdftk zur Erstellung ausgefüllter PDF-Formulare auf einem Inter- oder Intranetserver einzusetzen. Das Ausfüllen der Formularfelder erledigt der Nutzer in seinem Browser. Im Hintergrund erstellt dann ein PHP- oder Perl-Skript die FDF-Datei; zuletzt verbindet Pdftk beide Teile miteinander. Die fertige PDF-Datei kann per E-Mail zugestellt werden.

Passworte und Benutzerrechte in PDFs

PDF-Dateien lassen sich durch ein Benutzerpasswort und ein Passwort des Rechteinhabers schützen. Mit Pdftk legen Sie diese beiden Passworte und auch die Benutzerrechte einer PDF-Datei fest. Das folgende Beispiel setzt beide Passworte:

pdftk Datei.pdf output Datei_neu.pdf owner_pw Lie5quai user_pw phupaefu

Die Passworte in diesem Beispiel wurden mit dem Programm pwgen generiert. Für Nutzer- und Eigentümer-Passwort müssen Sie unterschiedliche Zeichenketten wählen.

Der Eigentümer einer PDF-Datei kann bestimmte Berechtigungen vergeben. In Tabelle 2 finden Sie eine Liste aller Rechtevorgaben, die Sie mit Pdftk setzen können. Das folgenden Beispiel erzeugt zunächst eine PDF-Datei erzeugt, die man lediglich drucken kann. Die zweite Zeile generiert ein PDF-Dokument, das man drucken und aus dem man Inhalte kopieren kann.

pdftk Beispiel.pdf output Datei_neu.pdf owner_pw Lie5quai user_pw phupaefu allow printing
pdftk Beispiel.pdf output Datei_neu.pdf owner_pw Lie5quai user_pw phupaefu allow printing CopyContents

Tabelle 2: PDF-Berechtigungen

Option Bedeutung
Printing Das Dokument darf in der bestmöglichen Qualität gedruckt werden.
DegradedPrinting Das Dokument darf nur in eingeschränkter Qualität gedruckt werden.
ModifyContents Der Inhalt des Dokuments darf geändert werden.
Assembly Das PDF-Dokument darf mit anderen PDF-Dokumenten zusammengefügt werden.
CopyContents Aus dem Dokument dürfen Textpassagen und Bilder kopiert werden.
ModifyAnnotations Kommentare und Anmerkungen dürfen geändert werden.
FillIn Formulare in der PDF-Datei dürfen ausgefüllt werden.
AllFeatures Der Nutzer erhält alle genannten Rechte.

PDF-Dateien lassen sich unterschiedlich stark verschlüsseln. Dazu geben Sie als letzte Option entweder encrypt_40bit oder encrypt_128bit an. Für geschützte PDF-Dateien müssen Sie zudem auch in Pdftk ein Passwort angegeben. Übergeben Sie mehrere Dateien, können Sie die Dateinamen dazu jeweils an eine Variable binden und dann für jede Datei ein Passwort angeben. Im folgenden Beispiel ist nur die Datei A passwortgeschützt:

pdftk A=Datei_neu.pdf B=Beispiel_farbig.pdf input_pw A=Lie5quai cat output Beispiel_pw.pdf user_pw Abraxas

Da Sie im vorigen Beispiel für Datei_neu.pdf das Zusammenfügen der PDF-Datei nicht gestattet haben, müssen Sie hier das Eigentümer-Passwort angeben.

Zusammenfassung

Mit Pdftk steht ein vielseitiges Multifunktionswerkzeug zur Bearbeitung von PDF-Dateien zur Verfügung. Falls Sie tiefer in die Materie einsteigen wollen, finden Sie unter [6] weitere Anwendungsfälle beschrieben [6].

Pdftk ist in C++ programmiert und basiert auf der iText-Bibliothek [5], die ihrerseits in Java erstellt wurde. Das fertige Programm wurde mit Werkzeugen aus der frei verfügbaren GNU Compiler Collection [1] compiliert und gelinkt. Es ist daher sehr gut auf unterschiedliche Betriebssysteme portierbar und es kann erweitert werden. Auf der Pdftk-Webseite finden Sie Links zu einigen Portierungen.

Das Programm wird aktiv weiterentwickelt. Der Programmautor Sid Steward beantwortet unter anderem in der Newsgroup comp.text.pdf und in seinem PDF-Forum [7] Fragen zu Pdftk und zur PDF-Programmierung.

Infos

[1] GCC-Projekt: GNU Compiler Collection ; Version 3.4.3; Nov. 2004; http://gcc.gnu.org/.

[2] Stefan Lagotzki: pdftk-Beispiele ; Version 1.0; Dez. 2004; http://www. lagotzki.de/pdftk/.

[3] Thomas Merz, Olaf Drümmer: Die PostScript- und PDF-Bibel; dpunkt-Verlag; 2002.

[4] Scott Pakin: The attachfile package ; Version 1.1; Jan. 2005; ftp: //ftp.dante.de/tex-archive/macros/latex/contrib/attachfile/.

[5] Bruno Lowagie, Paulo Soares: iText-Library ; Version 1.1; Nov. 2004; http://itext.sourceforge.net/.

[6] Sid Steward: PDF Hacks ; O’Reilly; 2004.

[7] Sid Steward: pdftk ; Version 1.12; Nov. 2004; http://www.accesspdf. com/pdftk/.

LinuxUser 08/2005 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