我使用PHP和TCPDF生成以utf8编码的在线发票。我已经使用PT-sans .ttf文件在tcpdf网站上的教程之后创建了字体定义文件。
使用Adobe Reader打开时,生成的pdf文件看起来很好(正确显示重音符号)。但是一旦用Adobe Illustrator打开pdf文件,就会看到正常的ascii字符和缺少字符符号的混合。在gmail预览中作为附件打开时,根本不会显示任何文本,只会显示图像。
我对福昕阅读器也有不一致的行为。它在一台计算机上安装了(安装了字体),但在另一台计算机上损坏(没有安装字体)。
Illustrator(左侧)和福昕阅读器printcreen:http://dl.dropbox.com/u/14647415/illustrator%20and%20foxit.jpg
以下是损坏文件的副本:http://dl.dropbox.com/u/14647415/2011040-3.pdf
PDF的大小为±200kB,因此字体似乎可以正确嵌入。
这似乎与任何utf8字体一起发生,嵌入了tcpdf网站上描述的过程。当我尝试使用tcpdf库附带的核心cid字体时,重音字符丢失了,或者已被替换为?,但是在Illustrator中也可以使用整体布局和文本。像Dejavusans这样的附加utf-8字体也显示出损坏。
我使用'UTF-8'作为传递给tcpdf构造函数的参数。
类XTCPDF扩展了TCPDF {
function __construct(){
parent::__construct('P', 'mm', 'A4', true, 'UTF-8', false);
...
}
...
}
你对可能导致这种情况的原因有什么看法吗?
非常感谢你。
第
答案 0 :(得分:4)
问题显然是由TCPDF自动对字体进行子集化引起的。这导致了除了Acrobat之外的字符集(字符被“移位”,“0”被解释为“A”等)的问题。
解决方法是设置:
$pdf->setFontSubsetting(false);
并手动对字体进行子集化,以根据您要使用的字符集减少生成的文件大小。