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"
答案2
使用 exiftool 从原始文件复制元数据。
exiftool -tagsFromFile input.pdf output.pdf