2

我正在使用程序将元数据插入到 postscript 文件中,然后使用 Adob​​e Distiller 将其提取为 pdf。我正在使用从Thomas Merz 的“使用 Acrobat-PDF 进行网络发布”的在线章节中获取的代码:

/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse

[ /Title (mot accenté)

  /Author (mot accenté)

  /Subject (mot accenté)

  /Keywords (mot accenté) 

/DOCINFO pdfmark

当您查看生成的 pdf 中的元数据时,重音字符会变成“?” 在主题和关键字字段中,但不在标题和作者字段中。字符都是一样的ascii 233

我尝试用八进制编码 (\351) 替换它们,结果相同(标题和作者没问题,主题和关键字搞砸了)。

文件编码为 latin-1,unix eol

我在 adobe 论坛上发现了一个提及,但答案对我来说没有意义。

http://forums.adobe.com/message/1165593http://forums.adobe.com/thread/307687

我将编码更改为 utf-8,以二进制方式插入字符(在 VIM 中:<Ctrl-v>u00e9),没有变化。我尝试在几个地方插入 BOM,它没有工作。

这是来自 Acrobat Pro 9 (9.3.3177) 的蒸馏器

我没有注意到 Acrobat Pro 7 的这个问题。

有没有人知道在修改后记文件时将重音字符放入所有元数据字段的解决方法,或者告诉我是否做错了?

不同的字段不接受相同的字节似乎很奇怪。

可能相关的 SO 问题:PDF 中的 Unicode

我正在嵌入所有字体。

4

5 回答 5

2

您可以尝试使用 UTF16-BE 进行编码并以 254 和 255(thorn 和 y-dieresis)开头的字符串吗?

于 2010-06-17T17:21:23.223 回答
2

您的最后参考包含在 PDF中使用十六进制字符 Unicode 的良好提示(请参阅 Mark Storer 的反馈)

所以而不是

[ /Title (mot accenté)

你可以试试

[ /Title <FFEF006D006F007400200061006300630065006E007400E9>`

ETC ...

可能有点笨拙,但在 shell 脚本的帮助下,它帮助我将其他特殊字符,如 'ä'、'õ'、'ü' 添加到 pdf 书签中。

于 2012-08-22T02:27:23.250 回答
1

You do not need to escape/encode ALL the accented characters!

It is enough to keep the standard ASCII characters and just mix in the \NNN notation where a special character should appear.

The following Ghostscript command creates a two page PDF. It will have nearly empty pages, with 2 bookmarks/outlines included, plus the metadata with accents. Example is for Windows, on Unix/Linux just use gs and change the line end escapes from DOS batch's ^ to unix shell's \:

gswin32c.exe ^
 -sDEVICE=pdfwrite ^
 -o 2-empty-pages-with-bookmarks-and-accents-in-metadata.pdf ^
 -c "[/Creator(brains&smarts)/Author(pipitas)/Subject(m\350t accent\351)/Title(mot accent\352)/Keywords(ganz sch\353\353 bl\353\353\d!)/DOCINFO pdfmark" ^
 -c "[/Page 1 /View [/XYZ null null null] /Title (Page One) /OUT pdfmark" ^
 -c "[/Page 2 /View [/XYZ null null null] /Title (Page Two) /OUT pdfmark" ^
 -c "200 500 moveto /Helvetica findfont 100 scalefont setfont (One) show showpage 200 500 moveto (Two) show showpage quit"
  .

I hope this finally settles your question "Does anybody know of a workaround to get the accented characters into ALL the metadata fields when modifying a postscript file?".

于 2010-08-16T21:54:59.723 回答
1

因此,您应该能够使用 ANSI 编码文件和 PDFDocEncoding 集中的任何字符(法语重音字符是),但这不起作用。

另一种方法是仍然使用 latin-1 编码文件,但将 Unicode 字符以八进制形式(2 个字节:\xxx\xxx)。并以 BOM 开头的字符串:\377\366

所以上面的主题字符串“mot accenté”必须翻译成:

/Subject (\377\376\155\000\157\000\164\000\040\000\141\000\143\000\143\000\145\000\156\000\164\000\351\000)

这行得通,但很糟糕。有人有更好的吗?

于 2010-06-14T18:54:41.253 回答
0

尽管这并不能直接回答您的问题,但在搜索“pdf 元数据重音”时,谷歌已将我带到这里。

因此,可能对其他人有用,知道您可以使用pdftk更改 pdf 元数据

要包含重音字符,请使用HTML CODE

我花了一些时间才弄清楚“Baçan”是如何显示为“Baħan”的,但那是因为 PDF 元数据不接受 UTF8。

Julio Verne 的元数据示例:

InfoKey: Author
InfoValue: J&#250;lio Verne

此外,我可以使用hexedit并将 HEX 代码手动插入正确的位置。

é = HEX E9 HTML: &#233;
ç = HEX E7 HTML: &#231;
ú = HEX FA HTML: &#250;
ó = HEX F3 HTML: &#243;

等等。看看上面的表格。

我希望这有助于帮助某人。

于 2012-12-09T17:20:07.443 回答