2011-05-09 90 views
4

我使用PHP和TCPDF生成使用utf8编码的在线发票。我已经使用PT-sans .ttf文件在tcpdf网站上的教程中创建了字体定义文件。使用TCPDF生成的UTF-8 PDF在Adobe Acrobat中显示正常,但在Illustrator和Google预览中已损坏

使用Adobe Reader打开时生成的pdf文件看起来很好(重音显示正确)。但是,只要您使用Adobe Illustrator打开PDF文件,就会看到正常的ASCII字符和缺少的字符符号。在gmail预览中作为附件打开时,根本没有显示任何文字,只会显示图像。

我也收到与Foxit阅读器不一致的行为。在一台计算机上(安装了字体)没问题,但在另一台计算机上已损坏(未安装字体)。

插图(左)和福昕阅读器PRINTSCREEN: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); 
    ... 
} 
... 

}

你有什么可能会导致这什么想法?

非常感谢您提前。

p。

回答

3

问题明显是由TCPDF自动对字体进行子集造成的。这导致了字符集(字符被“移位”,“0”被解释为“A”等)的问题,而不是Acrobat。

解决的办法是设置:

$pdf->setFontSubsetting(false); 

和手动子集化您的字体,以减少生成的文件大小,根据您想要使用的字符集。

+0

我有一个类似的问题,因为在Google文档中查看TCPDF生成的文件时,没有呈现文本。将字体子集设置为false并不能解决这个问题。其他人有任何解决方案吗? – 2012-09-20 15:13:42

+0

另请参阅http://dev.piwik.org/trac/ticket/2018和https://discussions.apple.com/thread/3140086?start=0&tstart=0,您必须$ pdf-> addFont()和setFontSubsetting(假) – max4ever 2012-11-20 14:39:41

相关问题