2012-05-02 241 views
3

我知道TCPDF支持特殊字符和多種語言。我嘗試了所有提供的字體。我想用UTF-8生成PDF。我知道包含的字體'freeserif'肯定包含有問題的角色。 「•」TCPDF - 顯示爲菱形問號的特殊字符(如:•)

這是我目前的構造函數調用:

$pdf=new MYPDF('P', 'mm', 'Letter', true, 'UTF-8', false);

這裏是正在生成文字的一個例子:

$this->Cell(80,6.35,"• $POST[reportTitle]",0,0,'L',true);

我也曾嘗試更換與性格它的HTML代碼:

•

+0

是'$ POST [reportTitle]'其實' $ _ POST [reportTitle]'?我不知道是否可以將東西注入到PDF(JavaScript?)中,但是如果您正在接受用戶輸入,可能需要確保它在投入之前未被污染。 – halfer

+0

不,$ POST是一個數組I構建自己,其中包含返回頁面$ _POST數組。它沒有發佈到PDF,我把它傳遞給$ _SESSION。對於混淆抱歉,我沒有想到要指出這一點! –

+0

很酷。應該是'$ POST ['reportTitle']',以避免警告。 – halfer

回答

2

可以看出here

坐落在TCPDF構造函數false$encoding參數'ISO-8859-1'或其它字符映射$unicode參數。

This將幫助您:

默認爲UTF-8的Unicode:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 

構造歐洲字符集的例子:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false); 
+0

是的,我已經嘗試了@adrien,但我試了一遍,只是三重檢查它。這使得所有的字符=框,就像這樣:[]但實際上是矩形。 有趣的是,如果我在這裏貼上盒,我們看到它即將成爲另一場語言: 牥燈 所以它只是產生它不正確。 –

+0

你所有的PHP代碼文件是用UTF-8編碼的嗎? (例如使用Notepad ++進行檢查)+如果你使用的是UTF-8的mysql連接?那麼你的MySQL表格(如果有的話)的編碼呢? – adrien

+1

好主意,雖然嘗試過,並重新生成它。刷新全部併發布新數據,但結果仍然相同。 :( 很快檢查mysql連接 –