PDFs manipulieren

Ekkart Kleinod  • 

Nicht jeder hat Adobe Acrobat zu Hause, für "kleinere" PDF-Aktionen gibt es mit pdftk ein gutes, plattformübergreifendes Werkzeug, für wenig Geld sogar mit grafischer Oberfläche für Windows. Unter Linux steht noch pdfjoin aus pdfjam zur Verfügung.

Dokument seitenweise zerlegen

Alle Seiten als PDF ablegen und eine Textdatei mit Informationen:

$> pdftk <pdf> burst

Seiten extrahieren

Seite 3 speichern

$> pdftk <pdf> cat 3 output <outname>

Seiten 3-5 speichern

$> pdftk <pdf> cat 3-5 output <outname>

Seiten 3-5 und ab 8 speichern

$> pdftk <pdf> cat 3-5 8-end output <outname>

Seiten extrahieren und Bookmarks behalten

pdftk erhält die Bookmarks leider nicht beim Extrahieren. Dazu kann man die bisherigen Bookmarks als dump extrahieren, dann manuell anpassen und als dump importieren. Kann eine Lösung sein.

Oder qpdf installieren:

$> qpdf --help
$> qpdf --help=page-selection
$> qpdf <input>.pdf --pages <input>.pdf 2-10 -- <output>.pdf

Dokumente zusammenfügen

pdftk

Hier gibt es verschiedene Möglichkeiten, je nach Bedarf können auch nur Teile extrahiert und zusammengefügt werden.

$> pdftk <pdf1> <pdf2> ... cat output <outname>
$> pdftk *.pdf ... cat output <outname>
$> pdftk A=<pdf1> B=<pdf2> cat A1-2 B output <outname>

pdfjoin

Bei pdfjoin kann man sogar Titel, Autor, Subject und Schlüsselwörter angeben.

$> pdfjoin --outfile <name>.pdf --pdfauthor '<autor>' --pdftitle '<titel>' --pdfsubject '<subject>' --pdfkeywords '<keywords>' <file1>.pdf <file2>.pdf ...

Seiten rotieren

gesamtes Dokument 90° nach rechts (east) rotieren

$> pdftk <pdf> cat 1-endeast output <outname>

PDF in PNG konvertieren

Werkzeug: convert aus imagemagick

Über Parameter "density" Auflösung (Größe) einstellen.

$> convert -density 150 <file>.pdf -quality 90 <file>.png

PDF beschneiden

Auszuschneidende Fläche angeben:

$> pdfcrop --margins '10 20 30 40' <input>.pdf <output>.pdf

Wegzuschneidenden Rand angeben

$> pdfcrop --margins '-10 -20 -30 -40' <input>.pdf <output>.pdf

Metadaten aus PDF extrahieren

$> pdftk <input>.pdf dump_data_utf8
$> pdftk <input>.pdf dump_data_utf8 > <outfile>.txt

Formularfelder aus PDF herausziehen

$> pdftk <input>.pdf dump_data_fields_utf8
$> pdftk <input>.pdf dump_data_fields_utf8 > <outfile>.txt

FDF-Daten aus PDF herausziehen

$> pdftk <input>.pdf generate_fdf output <outfile>.fdf

XFDF-Daten in PDF schreiben

$> pdftk <emptyform>.pdf fill_form <data>.xml output <outfile.pdf

xfdf-Daten

<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
    <fields>
        <field name="name">
            <value>value</value>
        </field>
        <field name="boolfield1">
            <value>Yes</value>
        </field>
        <field name="boolfield2">
            <value>Off</value>
        </field>
    </fields>
</xfdf>