Como fazer com que o ghostscript não limpe os metadados do PDF

10

O Ghostscript limpa os metadados do PDF como author, title, subjectetc. Como posso dizer ao ghostscript para não tocar nos metadados? Eu o invoco da seguinte maneira:

gs \
  -dBATCH                    \
  -dNOPAUSE                  \
  -sOutputFile=<output_file> \
  -sDEVICE=pdfwrite          \
  -dPDFSETTINGS=/ebook       \
  <input_file>
Marco
fonte
Por que você está usando o Ghostscript? Provavelmente há outra maneira de fazer o que você estiver fazendo. É incomum usar o Ghostscript quando a entrada não é um arquivo Postscript.
Gilles 'SO- stop be evil'
3
@Gilles Para fazer uma amostra reduzida das imagens no PDF e, assim, reduzir o tamanho. Não acho incomum usar o PDF como entrada. A ferramenta, pdf2pspor exemplo, usa ghostscript para a conversão e é enviada junto com gs.
11133 Marco Marco
Ok, Ghostscript parece ser a maneira usual de reduzir a amostra de imagens em um arquivo PDF, as ferramentas de manipulação de PDF nativas de código aberto parecem estar faltando nesse sentido. That ou ImageMagick, que apenas analisa as imagens e não se importa com os metadados do PDF.
Gilles 'SO- stop be evil' -
2
O ImageMagick usa o ghostscript para processar PDFs.
Marco
@ Gilles: "É incomum usar o Ghostscript quando a entrada não é um arquivo Postscript." - Nem um pouco, Gilles! Eu uso o tempo todo, todos os dias para fazer PDF-> processamento de PDF.
Kurt Pfeifle

Respostas:

6

Aparentemente, não é possível manter os metadados do PDF ao usar o ghostscript. Aqui está uma solução alternativa que primeiro salva os metadados em um arquivo usando pdftk, depois comprime o arquivo ghostscript e, finalmente, grava os metadados também 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"

Edit: Este é um bug no ghostscript, consulte Relatório de Bug e a confirmação de que isso não deveria acontecer .

Marco
fonte
O pdftks dump_data (_utf8) literalmente gera etiquetas chinesas. Eu não poderia encontrar um fórum para pdftk quer :(
Stefan K.