Ich versuche, eine Lösung zu finden, um PDFs mit bereits ausgefüllten Feldern in einer Linux-Befehlszeile zu reduzieren. Zuerst habe ich mit GhostScript herumgespielt, aber festgestellt, dass dies dazu neigte, alle Felddaten in unbrauchbare Zeichen umzuwandeln.
Wenn ich diesen Befehl ausführe
pdftk foo.pdf output bar.pdf flatten
und in einem PDF-Reader öffnen bar.pdf
, ist es abgeflacht, aber die Daten, die in den Feldern waren, sind einfach nicht vorhanden. Das PDF ist genauso, als wäre es nicht ausgefüllt, abzüglich der ausfüllbaren Felder.
Übersehe ich hier etwas?
Bei allen Lösungen, die ich bei Google finde, geht es darum, leere Formulare mit .fdf
Dateien zu füllen, was auf meine Situation nicht wirklich zutrifft.
Antwort1
Ich konnte diese Lösung zusammenschustern.
flattenpdf() {
if [[ $# -ne 2 ]]
then
echo "Usage: flattenpdf input.pdf output.pdf"
return 1
fi
temp=$(mktemp)
pdftk "$1" generate_fdf output ${temp}
pdftk "$1" fill_form ${temp} output "$2" flatten
rm ${temp}
}
Es verwendet pdftk, um aus dem ausgefüllten PDF eine FDF-Datei zu generieren und verwendet diese Datei dann in einem zweiten Durchlauf, um sie zu reduzieren. Warum pdftk so etwas nicht von vornherein macht, ist mir schleierhaft.