如何使Ghostscript不会擦除PDF元数据


10

Ghostscript像其他方法一样擦拭PDF元数据author, title, subject。如何告诉ghostscript不要触摸元数据?我按如下方式调用它:

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

为什么使用Ghostscript?可能有另一种方式可以做您正在做的事情。当输入的内容不是Postscript文件时,很少使用Ghostscript。
吉尔斯(Gillles)“所以-别再作恶了”

3
@Gilles对PDF中的图像进行降采样,从而减小尺寸。我认为使用PDF作为输入并不少见。该工具pdf2ps例如使用ghostscript进行转换,并与一起提供gs
马可(Marco)

好的,Ghostscript似乎确实是对PDF文件中的图像进行下采样的常用方法,在这方面似乎缺少开源的本机PDF操作工具。那个或ImageMagick,它只查看图像,而不关心PDF元数据。
吉尔斯(Gilles)'所以

2
ImageMagick使用ghostscript处理PDF。
马可(Marco)2012年

@Gilles:“当输入的内容不是Postscript文件时,通常不使用Ghostscript。” -一点也不,吉尔斯!我每天都在无休止地使用它进行PDF-> PDF处理。
Kurt Pfeifle 2015年

Answers:


6

显然,使用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中的错误,请参阅错误报告以及有关错误确认


pdftks dump_data(_utf8)从字面上输出中文标签。我也找不到pdftk的论坛:(
Stefan K.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.