Wie man Ghostscript macht, ohne PDF-Metadaten zu löschen

10

Ghostscript löscht die PDF-Metadaten wie author, title, subjectusw. Wie kann ich Ghostscript anweisen, die Metadaten nicht zu berühren? Ich rufe es wie folgt auf:

gs \
  -dBATCH                    \
  -dNOPAUSE                  \
  -sOutputFile=<output_file> \
  -sDEVICE=pdfwrite          \
  -dPDFSETTINGS=/ebook       \
  <input_file>
Marco
quelle
Warum benutzt du Ghostscript? Es gibt wahrscheinlich einen anderen Weg, um alles zu tun, was Sie tun. Es ist ungewöhnlich, Ghostscript zu verwenden, wenn die Eingabe keine Postscript-Datei ist.
Gilles 'SO - hör auf böse
3
@ Gilles Zum Downsampling der Bilder in der PDF-Datei und damit zur Reduzierung der Größe. Ich denke nicht, dass es ungewöhnlich ist, PDF als Eingabe zu verwenden. Das Tool verwendet pdf2pszB Ghostscript für die Konvertierung und wird zusammen mit geliefert gs.
Marco
Ok, Ghostscript scheint die übliche Methode zu sein, um Bilder in einer PDF-Datei herunterzusampeln. Die nativen Open-Source-PDF-Manipulationswerkzeuge scheinen diesbezüglich zu fehlen. Das oder ImageMagick, das nur die Bilder betrachtet und sich nicht um PDF-Metadaten kümmert.
Gilles 'SO - hör auf böse zu sein'
2
ImageMagick verwendet Ghostscript zur Verarbeitung von PDFs.
Marco
@ Gilles: "Es ist ungewöhnlich, Ghostscript zu verwenden, wenn die Eingabe keine Postscript-Datei ist." - Überhaupt nicht, Gilles! Ich benutze es die ganze Zeit, jeden Tag, um PDF-> PDF-Verarbeitung zu machen.
Kurt Pfeifle

Antworten:

6

Anscheinend ist es nicht möglich, die PDF-Metadaten bei Verwendung von Ghostscript beizubehalten. Hier ist eine Problemumgehung, bei der zuerst die Metadaten mithilfe von in einer Datei gespeichert pdftk, dann die Datei mit komprimiert ghostscript und schließlich die Metadaten auch mit zurückgeschrieben werden pdftk.

INPUTPDF=<input_file>
OUTPUTPDF=<output_file>
TMPPDF=$(mktemp)
METADATA=$(mktemp)

# save metadata
pdftk "$INPUTPDF" dump_data_utf8 > "$METADATA"

# compress
gs                       \
  -q                     \
  -sOutputFile="$TMPPDF" \
  -sDEVICE=pdfwrite      \
  -dNOPAUSE              \
  -dBATCH                \
  -dPDFSETTINGS=/ebook   \
  "$INPUTPDF"

# restore metadata
pdftk "$TMPPDF" update_info_utf8 "$METADATA" output "$OUTPUTPDF"

# clean up
rm -f "$TMPPDF" "$METADATA"

Edit: Das ist ein Fehler in ghost, siehe Fehlerbericht und die Bestätigung , dass dies nicht geschehen soll .

Marco
quelle
pdftks dump_data (_utf8) gibt buchstäblich chinesische Labels aus. Ich konnte auch kein Forum für pdftk finden :(
Stefan K.