如何使 Ghostscript 不擦除 PDF 元数据

如何使 Ghostscript 不擦除 PDF 元数据

Ghostscript 会擦除 PDF 元数据等author, title, subject。我怎样才能告诉 Ghostscript 不要碰元数据?我按如下方式调用它:

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

答案1

显然,使用 Ghostscript 时无法保留 PDF 元数据。这是一种解决方法,首先使用 将元数据保存到文件pdftk,然后使用 压缩文件ghostscript ,最后也使用 写回元数据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"

编辑:这是 Ghostscript 中的一个错误,请参阅错误报告确认这不应该发生

答案2

使用 exiftool 从原始文件复制元数据。

exiftool -tagsFromFile input.pdf  output.pdf

相关内容