2011-05-09 88 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

相關問題