我正在向现有 PDF 插入书签,但重音“c”存在一些问题。有例子(例子中使用的字符集是UTF-8):
$name = "Ruční nářadí";
$name = chr(254).chr(255).iconv('UTF-8', 'UTF-16BE', str_replace(array('(',')','/'),array('\\(','\\)','\\/'),$name));
$fh = fopen('pdfmark.txt', 'w');
fputs($fh, "[/Title ({$name}) /Page 1 /OUT pdfmark\n");
fclose($fh);
$command = "gs -sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH -sOutputFile=out.pdf final.pdf pdfmark.txt; mv out.pdf final.pdf";
exec($command);
问题是重音č
在最终 PDF 的书签中显示为Ċ
(具有不同重音的大写字母)。我尝试了我的语言(捷克语)中使用的其他重音字符,除了这个,一切都很好。
感谢您提供解决此问题的任何线索。
编辑(2013-02-01):
使用的 GhostScript 版本是 9.06 (2012-08-08)。我正在使用 Adobe Reader 11.0.1 查看生成的 PDF 文件。
我还在考虑它...是否必须以某种方式在 PDF 中指定编码?因为源 PDF 不在我的控制范围内,我对此一无所知。如果是这样,有没有办法使用 GS 或 pdfmark 来做到这一点?我认为如果书签的编码是 Unicode,那真的没关系,但也许我错了。
编辑(2013-02-05):
GS 的 pdfwrite 或 Acrobat 中似乎存在错误,请参阅GS 的错误跟踪中的更多信息。我会在这里写解决方案信息,待解决后。