我有一个基本的pdf文件,并想要更新标题为中文(UTF-8)使用鬼怪脚本和pdfmark,命令如下
gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=result.pdf base.pdf pdfmarks下面是pdfmark文件(编码为UTF-8,没有BOM)。
[ /Title (敏捷开发)
/Author (Larry Cai)
/Producer (xdvipdfmx (0.7.8))
/DOCINFO pdfmark当我检查result.pdf的属性时,该命令将被成功执行
标题改为æŁ‘æ“·å¼•å‘
请给我提示如何解决这个问题,在gs命令或pdfmark中有任何参数吗?
发布于 2012-02-08 09:10:01
PDF引用声明文档信息字典中的标题条目是“文本字符串”类型。文本字符串被定义为使用带有字节顺序标记的PDFDocEncoding或UTF-16BE (参见1.7PDF参考手册第158页)。
因此,您不能在没有BOM的情况下使用UTF-8指定标题。
我可以想象,如果将标题字符串替换为使用UTF-16BE定义内容的字符串,则它将正常工作。为了便于使用,我建议您使用十六进制字符串而不是常规的PostScript字符串来指定数据。
发布于 2018-11-15 06:10:49
利用Chiu的想法,我的解决方案是下一个。获得具有BOM的UTF-16 by字符串
echo -n '(敏捷开发)' | iconv -t utf-16 |od -x -A none | tr -d ' \n' | sed 's/./\U&/g;s/^/</;s/$/>/'你会得到<FEFF0028654F63775F0053D10029>。用这个代替标题。
/Title <FEFF0028654F63775F0053D10029>发布于 2013-06-25 08:37:46
遵循pdfmark for docinfo metadata in pdf is not accepting accented characters in Keywords or Subject
我使用这个函数从utf-8为info.txt创建字符串,由gs命令使用。
function str_in_pdf($str){
$cmd = sprintf("echo '%s'| iconv -t utf-16 |od -x -A none",$str);
exec($cmd,$out,$ret);
return "<" . implode("",$out) .">";
}https://stackoverflow.com/questions/9188189
复制相似问题