使用 ghostscript 和 pdfmark 更新 pdf 元数据时编码错误

Lar*_*Cai 3 pdf encoding ghostscript pdf-manipulation

我有一个基本的pdf文件,想使用ghostscript和pdfmark将标题更新为中文(UTF-8),命令如下

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=result.pdf base.pdf pdfmarks
Run Code Online (Sandbox Code Playgroud)

和 pdfmarks 文件(编码是UTF-8 没有 BOM)在下面

[ /Title (????)
/Author (Larry Cai)
/Producer (xdvipdfmx (0.7.8))
/DOCINFO pdfmark
Run Code Online (Sandbox Code Playgroud)

该命令已成功执行,而当我检查 result.pdf

标题改为 æ?‘擷引å‘

请给我提示如何解决这个问题,gs命令或pdfmark中有任何参数吗?

Ken*_*enS 6

PDF 参考声明文档信息字典中的标题条目是“文本字符串”类型。文本字符串定义为使用带有字节顺序标记的PDFDocEncodingUTF-16BE(请参阅 1.7 PDF 参考手册的第 158 页)。

因此,您不能在没有 BOM 的情况下使用 UTF-8 指定标题。

我想如果你用一个用 UTF-16BE 和 BOM 定义内容的字符串替换标题字符串,那么它会正常工作。我建议您使用十六进制字符串而不是常规的 PostScript 字符串来指定数据,只是为了便于使用。