Cara membuat ghostscript tidak menghapus metadata PDF

10

Ghostscript menghapus metadata PDF seperti author, title, subjectdll. Bagaimana saya bisa memberitahu ghostscript untuk tidak menyentuh metadata? Saya memohonnya sebagai berikut:

gs \
  -dBATCH                    \
  -dNOPAUSE                  \
  -sOutputFile=<output_file> \
  -sDEVICE=pdfwrite          \
  -dPDFSETTINGS=/ebook       \
  <input_file>
Marco
sumber
Mengapa Anda menggunakan Ghostscript? Mungkin ada cara lain untuk melakukan apa pun yang Anda lakukan. Jarang menggunakan Ghostscript ketika input bukan file Postscript.
Gilles 'SANGAT berhenti menjadi jahat'
3
@Gilles Untuk mengambil sampel gambar dalam PDF dan mengurangi ukurannya. Saya rasa tidak lazim menggunakan PDF sebagai input. Alat pdf2psmisalnya menggunakan ghostscript untuk konversi dan dikirimkan bersama gs.
Marco
Ok, Ghostscript tampaknya menjadi cara yang biasa untuk menurunkan sampel gambar dalam file PDF, alat manipulasi PDF asli sumber terbuka tampaknya kurang dalam hal itu. Itu atau ImageMagick, yang hanya melihat gambar dan tidak akan peduli tentang metadata PDF.
Gilles 'SO- stop being evil'
2
ImageMagick menggunakan ghostscript untuk memproses PDF.
Marco
@Gilles: "Tidak biasa menggunakan Ghostscript ketika inputnya bukan file Postscript." - Sama sekali tidak, Gilles! Saya menggunakannya setiap saat, setiap hari untuk melakukan PDF-> pemrosesan PDF.
Kurt Pfeifle

Jawaban:

6

Tampaknya tidak mungkin menyimpan metadata PDF saat menggunakan ghostscript. Ini adalah solusi yang pertama-tama menyimpan metadata ke file menggunakan pdftk, kemudian kompres file dengan ghostscript dan akhirnya menulis kembali metadata juga menggunakan 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"

Sunting: Ini adalah bug dalam ghostscript, lihat laporan Bug dan konfirmasi bahwa ini tidak seharusnya terjadi .

Marco
sumber
pdftks dump_data (_utf8) secara harfiah menampilkan label Cina. Saya tidak dapat menemukan forum untuk pdftk :(
Stefan K.