首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用鬼怪脚本和pdfmark更新pdf元数据时编码错误

使用鬼怪脚本和pdfmark更新pdf元数据时编码错误
EN

Stack Overflow用户
提问于 2012-02-08 05:18:42
回答 3查看 3K关注 0票数 4

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

代码语言:javascript
复制
gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=result.pdf base.pdf pdfmarks

下面是pdfmark文件(编码为UTF-8,没有BOM)。

代码语言:javascript
复制
[ /Title (敏捷开发)
/Author (Larry Cai)
/Producer (xdvipdfmx (0.7.8))
/DOCINFO pdfmark

当我检查result.pdf的属性时,该命令将被成功执行

标题改为æŁ‘æ“·å¼•å‘

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-08 09:10:01

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

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

我可以想象,如果将标题字符串替换为使用UTF-16BE定义内容的字符串,则它将正常工作。为了便于使用,我建议您使用十六进制字符串而不是常规的PostScript字符串来指定数据。

票数 6
EN

Stack Overflow用户

发布于 2018-11-15 06:10:49

利用Chiu的想法,我的解决方案是下一个。获得具有BOM的UTF-16 by字符串

代码语言:javascript
复制
echo -n '(敏捷开发)' | iconv -t utf-16 |od -x -A none | tr -d ' \n' | sed 's/./\U&/g;s/^/</;s/$/>/'

你会得到<FEFF0028654F63775F0053D10029>。用这个代替标题。

代码语言:javascript
复制
/Title <FEFF0028654F63775F0053D10029>
票数 2
EN

Stack Overflow用户

发布于 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命令使用。

代码语言:javascript
复制
  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) .">";
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9188189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档