logoOL.gif
user_gelb_schwarz_or.gif
logoUL.gif
logoUR.gif claim.gif
LinuxUser LinuxCommunity EasyLinux Linux-Magazin International
      Anzeige
TFT Monitor bei Mercateo kaufen.
Neues Netbook? Ein Preisvergleich lohnt sich.
Bei uns finden sie Notebooks, PDAs und Drucker mit Testberichten und Tipps.
Diamant Buchhaltungssoftware – transparent und detailliert auch für die Konzernbuchhaltung.
Günstige Shareware Programme als direkte Downloads im Software Portal.
Bis zu 70% sparen durch Preisvergleich.
      Anzeige

Erschienen in LinuxUser 08/2005   »   Ausgabe bestellen

Multifunktions-Tool für PDF-Dateien

PDFs ausgereizt


Zur Verarbeitung der Papierberge müssen wir Dokumente abheften und entheften, kopieren, neu zusammenstellen, abstempeln, untersuchen oder klassifizieren. Bei der täglichen Arbeit mit elektronischen Dokumenten hilt ein ganz spezielles Multifunktionsgerät: Pdftk -­ das PDF-Toolkit.

von Stefan Lagotzki

Jeder 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 (Abbildung 1) listet alle Kommandos und Optionen des Programms samt kurzer Hilfetexte auf. In Tabelle 1 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]

Abb. 1: Beim Aufruf mit der Option --help bietet Pdftk eine umfangreiche Hilfestellung zu allen Befehlen und Optionen an.
Tabelle 1: Pdftk-Operationen
OperationErläuterung
attach_filesFügt Dateien als Anlage an ein PDF-Dokument an. Die PDF-Datei kann auf diese Weise zu einer Archivdatei erweitert werden.
backgroundVersieht jede Seite eines PDF-Dokuments mit einem Wasserzeichen. Auf leere Flächen kann auch eine Art Stempel gesetzt werden.
burstZerlegt ein PDF-Dokument in einzelne Seiten.
catFügt mehrere Dateien oder mehrere Seiten aus verschiedenen PDF-Dokumenten zu einer neuen PDF-Datei zusammen.
dump_dataGibt Informationen zu einer PDF-Datei auf die Standardausgabe aus.
dump_data_fieldsGibt Informationen zu den Formularfeldern einer PDF-Datei auf die Standardausgabe aus.
fill_formFüllt PDF-Formulare aus oder verbindet die Formulardaten mit dem Dokument.
unpack_filesEntpackt die angefügten Anlagen eines PDF-Dokuments in ein Verzeichnis.
update_infoAktualisiert 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.

PDF-Dateien durch Anhänge ergänzen

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 demonstriert, 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 Felder 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 finden 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
OptionBedeutung
PrintingDas Dokument darf in der bestmöglichen Qualität gedruckt werden.
DegradedPrintingDas Dokument darf nur in eingeschränkter Qualität gedruckt werden.
ModifyContentsDer Inhalt des Dokuments darf geändert werden.
AssemblyDas PDF-Dokument darf mit anderen PDF-Dokumenten zusammengefügt werden.
CopyContentsAus dem Dokument dürfen Textpassagen und Bilder kopiert werden.
ModifyAnnotationsKommentare und Anmerkungen dürfen geändert werden.
FillInFormulare in der PDF-Datei dürfen ausgefüllt werden.
AllFeaturesDer 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. (jlu)

Infos
[1] 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/

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.




Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2010 Linux New Media AG | Last modified: 2008-04-22 14:01

[Linux-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Ubuntu User] [Linux Technical Review] [Linux Magazine] [Linux Pro Magazine] [Ubuntu User]
[EasyLinux Poland] [Linux Magazine Poland] [Linux Magazine Brasil] [EasyLinux Brasil] [Linux Magazine Spain]