TCPDF的官方網站:http://www.tcpdf.org/
tcpdf(5.9.149)提供了65個範例檔案,示範如何從php建立各種不同樣式、內容風格的PDF檔案。
其中example_038.php是一個說明如何建立CJK文字內容的範例(CJK:中日韓),如果把這個範例的頁首內容更為繁體中文內容,會無法正確顯示:
// set default header data
//原作法以define的方式,定義在tcpdf_config.php中,是英文內容
//$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH,
PDF_HEADER_TITLE.' 038', PDF_HEADER_STRING);
//字型更改為繁體中文內容
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, '測試繁體中文頁首標題', '測試繁體中文頁首字串內容');
將tcpdf_config.php的PDF_FONT_NAME_MAIN的值,由helvetica更改為msungstdlight,即可正確顯示繁體中文的頁首標題內容。
/**
* default main font name
*/
//define ('PDF_FONT_NAME_MAIN', 'helvetica'); //預設值
define ('PDF_FONT_NAME_MAIN', 'msungstdlight'); //可讓頁首標題正確顯示
以下是修改example_038.php,使顯示繁體中文內容的部分程式碼:
// set font
//$pdf->SetFont('cid0jp', '', 20); //這個應該也可以
//$pdf->SetFont('cid0ct', '', 20); //這個應該也可以
$pdf->SetFont('msungstdlight', '', 20);
// add a page
$pdf->AddPage();
//$txt = 'Example of CID-0 CJK unembedded font.
//To display extended text you must have CJK fonts for your PDF reader: こんにちは世界';
$txt = '林書豪再現「林來瘋」身手!';
$txt = $txt . '昨拿廿分、十三助攻與四抄截,';
$txt = $txt . '本季第六次獻出兩個「雙位數」成績單;';
$txt = $txt . '可惜紐約尼克隊防守再出紕漏,';
$txt = $txt . '終場一一四比一一九不敵密爾瓦基公鹿,客場四戰全輸。';
$txt = $txt . '明天凌晨十二點重返紐約主場迎戰費城七六人,尼克全力止敗。';
$pdf->Write(0, $txt, '', 0, 'L', true, 0, false, false, 0);
以下是調整後所顯示的內容:
感謝提供這麼好的方法,謝謝!!
回覆刪除$pdf->SetFont('cid0jp', '', 18); // 可以顯示中文(繁、簡)、日文、韓文。
回覆刪除//$pdf->SetFont('msungstdlight', '', 18, '', true); // 繁中, 但是效果不好,字會偏移
//$pdf->SetFont('stsongstdlight', '', 20); // 可以顯示中文, 但是效果不好,字會偏移
//$pdf->SetFont('dejavusans', '', 14, '', true); // 預設 utf8
为什么我这样做后问题仍旧???
回覆刪除是什麼問題?
回覆刪除請問我依著範例做為啥輸出都是亂碼 一點PDF樣子都看不到?
回覆刪除請確認一下程式碼是不是UTF-8編碼?
回覆刪除感謝,我是遇到問題是pdf下載下來後,用gmail寄出去,gmail預覽會亂碼,但下載下來看是正常的。
回覆刪除