Come rendere ghostscript non cancellare i metadati PDF


10

Ghostscript cancella i metadati PDF come author, title, subjectecc. Come posso dire a ghostscript di non toccare i metadati? Lo invoco come segue:

gs \
  -dBATCH                    \
  -dNOPAUSE                  \
  -sOutputFile=<output_file> \
  -sDEVICE=pdfwrite          \
  -dPDFSETTINGS=/ebook       \
  <input_file>

Perché stai usando Ghostscript? C'è probabilmente un altro modo di fare qualunque cosa tu stia facendo. È raro usare Ghostscript quando l'input non è un file Postscript.
Gilles 'SO- smetti di essere malvagio' il

3
@Gilles Per sottocampionare le immagini nel PDF e ridurre così le dimensioni. Non credo sia raro usare PDF come input. Lo strumento, pdf2psad esempio, utilizza ghostscript per la conversione e viene spedito insieme gs.
Marco,

Ok, Ghostscript sembra essere il solito modo per sottocampionare le immagini in un file PDF, gli strumenti di manipolazione PDF nativi open source sembrano mancare in questo senso. Quello o ImageMagick, che guarda solo le immagini e non si preoccuperà dei metadati PDF.
Gilles 'SO- smetti di essere malvagio' l'

2
ImageMagick utilizza ghostscript per l'elaborazione di PDF.
Marco,

@Gilles: "Non è raro usare Ghostscript quando l'input non è un file Postscript." - Niente affatto, Gilles! Lo uso sempre, ogni giorno per fare l'elaborazione PDF-> PDF.
Kurt Pfeifle,

Risposte:


6

Apparentemente non è possibile conservare i metadati PDF quando si usa ghostscript. Ecco una soluzione alternativa che per prima cosa salva i metadati in un file usando pdftk, quindi comprime il file ghostscript e infine riscrive i metadati anche usando 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"

Modifica: questo è un bug in ghostscript, vedi la segnalazione dei bug e la conferma che ciò non dovrebbe accadere .


pdftks dump_data (_utf8) produce letteralmente etichette cinesi. Neanche a trovare un forum per pdftk :(
Stefan K.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.