mrmu 設計工作室

WordPress 網站架設、使用者經驗、互動介面研究

  • 服務與作品
  • 關於mrmu
  • 網站架設

使用PHP開源類別(TCPDF)製作 UTF-8 的PDF報表

2011-07-25 by audi_lu 4 Comments


最近有PHP專案需要製作報表,決定了輸出使用PDF格式後,便開始尋找解決方案。目前網路上找到的大多是FPDF或是其衍生出來的專案,因為有點急,就直接拿FPDF來做,沒想到是惡夢的開始XD,使用FPDF製作英文內容的FPDF,是沒什麼問題,但如果是中文內容,便問題重重。

試了很多目前現存在網路上號稱支援中文的FPDF,試驗結果不是失敗就是只支援BIG5 (chinese.php檔),偏偏客戶的中文資料有罕見字,像是媖、煊、堃、珉、彣、伃、峯、晧等字,若用BIG5就會出不來。

試了好幾個小時後宣告放棄FPDF,尋找它表現比較好的子孫,於是找到TCPDF。

TCPDF因為是FPDF的子孫,所以語法幾乎不太需要轉換,而且支援UTF-8,真的是感動哪。不過它最感心的不只是支援UTF-8,它還支援WriteHTML這個超級相見恨晚的函式,故名思義就是只要餵它HTML語法,它就可以忠實轉成PDF內容。

到TCPDF官網下載TCPDF後,解開後可發現裡頭的examples目錄就有很多範例了。做報表最基本的就是頁首、頁尾的設定了,可參考第1~3個範例;另外,第6個範例就是WriteHTML。

基本上它的使用方式很簡單,只要include TCPDF,自建一個class,然後去extend TCPDF類別,接著new出實體,就可以開始Play了:

include_once ('lib/tcpdf/tcpdf.php');
require_once('lib/tcpdf/config/lang/eng.php');

class PDF_report1 extends TCPDF
{
	//Page header
	function Header()
	{
		// 自訂頁首內容
	}
	function Footer()
	{
		// 自訂頁尾內容
	}
}

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

如上,New出來的$pdf,就可以藉著執行一脫拉庫的方法,一步一步的建立PDF格式的內容,最後再output,這個php檔就會輸出成pdf格式了。

至於輸出UTF-8的中文字,只要使用此語法就OK了:

$pdf->SetFont('msungstdlight','',16);

其他詳細用法,直接copy範例修改會比較快。

參考:
TCPDF官網-範例

分享此文:

  • 共享
  • Facebook
  • Twitter
  • Pocket

相關

Filed Under: 網站架設 Tagged With: pdf, PHP, tcpdf, 報表

Comments

  1. maxmas says

    2013-04-17 at 16:44:43

    $pdf = new TCPDF(PDF_PAFE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, ‘UTF-8’, false);

    // set font (PHP TCPDF 顯示中文字型)
    $pdf->SetFont(‘cid0jp’, ”, 18); // 可以顯示中文(繁、簡)、日文、韓文。
    //$pdf->SetFont(‘msungstdlight’, ”, 18, ”, true); // 繁中, 但是效果不好,字會偏移
    //$pdf->SetFont(‘stsongstdlight’, ”, 20); // 可以顯示中文, 但是效果不好,字會偏移
    //$pdf->SetFont(‘dejavusans’, ”, 14, ”, true); // 預設 utf8

    回覆
  2. LOO2K says

    2011-12-05 at 13:36:38

    不知道能不能使用其他的字体,并且能支持中文呢?

    回覆
  3. Shane says

    2011-09-27 at 13:51:59

    受益良多呀,以前直接跳到列印頁面讓使用者自己下載成pdf

    回覆

Trackbacks

  1. 使用PHP產生UNICODE中文PDF | 沉睡的貓 說:
    2011-11-19 at 18:14:43

    […] 使用PHP開源類別(TCPDF)製作 UTF-8 的PDF報表 本篇發表於 PHP教學。將永久鏈結加入書籤。 ← 利用 Android 手機記錄行程及途經點 將陣列轉成字串 → […]

    回覆

發表迴響 取消回覆

你的電子郵件位址並不會被公開。 必要欄位標記為 *

近期文章

  • 2017 COSCUP WordPress 社群議程:WordPress 開發大小事
  • Webpack 實作入門2:打包 CSS / SCSS 與 加入 Bootstrap
  • Webpack 實作入門1:寫給 “非Node.js開發者” 的教學
  • WordPress 4.7 重磅發表,快來了解有哪些重大更新!
  • 東京自由行之 WordCamp Tokyo 2016
  • 愚人節玩笑成真?WordPress 發表 Node.js 及 React.js 打造的後台應用 – Calypso
  • 使用Git、Composer、Sublime Text進行WordPress專案開發
  • WordPress自訂模組(widget)及顯示版位
  • 新手路跑賽心得及賽前準備 – 臺北渣打公益路跑賽12.5km
  • WordPress 10th Anniversary – WP10週年歡慶小聚

分類

  • CSS (2)
  • JavaScript (8)
  • WordPress (26)
  • 人生哲學 (3)
  • 公告 (9)
  • 活動聚會 (10)
  • 生活記事 (29)
  • 網站架設 (78)
  • 網路行銷 (14)
  • 金工 (134)
  • 開課教學 (29)

Copyright © 2018 · Genesis Sample Theme on Genesis Framework · WordPress · Log in