TCPDF 是一款強大的 Html 轉 PDF 的生成工具
引入後只要把內容用 Html 規則組合好,即可輸出 PDF格式 的文件
比較麻煩的是很多樣式不吃,只能邊寫樣式邊測試去解決佈局問題
但若遇到中文時的困擾更大,主要有以下兩點:
- 輸出中文內容有缺字或亂碼問題
解決方法:$this->SetFont('msungstdlight', '', 18); // 設定 msungstdlight 字型
由於這是內建字體真的蠻醜的,更囉唆的是在 Windows 系統中會變成『新細明體』
如果想要各系統中產出的PDF檔都可以是美美的黑體,可以下載『台北黑體TCPDF字型檔』
設定改為$this->SetFont('TaipeiSansTCBeta', '', 18); // 設定 TaipeiSansTCBeta 字型
這樣輸出時就可以是美美的黑體囉
- 下載涵中文檔名時,不同瀏覽器可能會有亂碼檔名問題
解決方法:
找到套件檔案 tcpdf.php 大約在 7667 行左右
在 case 'D': 這個下載規則中有一段 headerheader('Content-Disposition: attachment; filename="'.basename($name).'"')
把他註解掉,手動修改為以下判斷式的語法,來幫檔名做瀏覽器的不同規則
// header('Content-Disposition: attachment; filename="'.basename($name).'"'); // 解決各瀏覽器下載中文檔名亂碼問題 if (preg_match("/MSIE/", $_SERVER["HTTP_USER_AGENT"])) { $name = urlencode($name); $name = str_replace("+", "%20", $name); // 替换空格 $attachment = "attachment; filename=\"{$name}\"; charset=UTF-8"; } elseif (preg_match("/Firefox/", $_SERVER["HTTP_USER_AGENT"])) { $attachment = 'attachment; filename*=utf-8\'\'' . $name; } elseif (preg_match("/Safari/", $_SERVER["HTTP_USER_AGENT"])) { $name = rawurlencode($name); $attachment = 'attachment; filename*=utf-8\'\'' . $name; } else { $attachment = "attachment; filename=\"{$name}\"; charset=UTF-8"; } header('Content-Disposition: ' . $attachment);
目前在 IE、Chrome、Firefox、Safari 測試,下載的檔名就不再是亂碼都能是正確中文囉!!
參考連結:tcpdf.org