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.