16.
用TCPDF產生PDF(上)
一、 安裝設定TCPDF
-
將tcpdf解壓放至模組的class下。
-
開啟config/tcpdf_config.php將PDF_FONT_NAME_MAIN及PDF_FONT_NAME_DATA的值helvetica改為msungstdlight,以正確使用中文。
-
msungstdlight需有安裝Adobe Reader才能看到的中文字型。
-
可將Droid Sans Fallback字型解壓傳至fonts底下,即有droidsansfallback中黑體可用。
-
完整手冊:http://www.tcpdf.org/doc/code/classTCPDF.html
二、 建立PDF檔案
include_once "header.php";
require_once('class/tcpdf/config/lang/zho.php');
require_once('class/tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
-
「$orientation」頁面方向,預設為P(直式),橫向為L,空值則自動判斷
-
「$unit」度量單位,pt、mm(預設)、cm、in
-
「$format」紙張大小,預設為A4
-
「$unicode」是否使用unicode,預設為true
-
「$encoding」文件編碼,預設為UTF-8
-
「$diskcache」使用磁碟快取,true會減少記憶體用量,但效能會變差,預設為false
-
「$pdfa」使用PDF/A模式(長期保存的電子文件格式),預設為false。
三、 常用語法
$pdf->setPrintHeader(false); //不要頁首
$pdf->setPrintFooter(false); //不要頁尾
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); //設定自動分頁
$pdf->setLanguageArray($l); //設定語言相關字串
$pdf->setFontSubsetting(true); //產生字型子集(有用到的字才放到文件中)
$pdf->SetFont('droidsansfallback', '', 12, '', true); //設定字型
$pdf->AddPage(); //新增頁面
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));//文字陰影
$pdf->writeHTML($html, $ln=1, $fill=0, $reseth=true, $cell =true, $align='');
$pdf->Output('contact.pdf', 'D');
-
SetFont 的參數:
-
「$family」字型名稱
-
「$style」樣式:B粗、I斜、U底線、D刪除線、O上方線
-
「$size」字型大小(預設為12pt)
-
「$fontfile」字型檔
-
「$subset」使用文字子集
-
writeHTML的參數如下(有支援的網頁標籤:a, b, blockquote, br, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, img, li, ol, p, pre, small, span, strong, sub, sup, table, tcpdf, td, th, thead, tr, tt, u, ul):
-
「$html」內容(屬性一定要用雙引號)
-
「$ln」下一個元件的位置:「0(預設)右邊;1下行最左邊;2目前元件下方」
-
「$fill」是否填色:「true為不透明;false透明」
-
「$reseth」若true會重設最後一格的高度
-
「$cell」自動增加內距
-
「$align」對齊方向:「L;C;R」。
-
Output的參數如下:
-
「$name」檔名
-
「$dest」輸出模式:「I: 在瀏覽器中呈現 (預設);D: 強制下載(無法用中文檔名);F: 存在主機空間裡;S: 以文字方式傳回文件;FI: 等同F+I :FD: 等同F+D;E: 以郵件附件方式傳回文件。
四、 插入文字的方法
Cell($w, $h, $txt, $border, $ln, $align, $fill, $link, $stretch, $ignore_min_height, $calign, $valign);
MultiCell($w, $h, $txt, $border, $align, $fill, $ln, $x, $y, $reseth, $stretch, $ishtml, $autopadding, $maxh, $valign, $fitcell);
writeHTMLCell($w, $h, $x, $y, $html, $border, $ln, $fill, $reseth, $align, autopadding);
各種參數:
-
「$w」寬
-
「$h」最小高度
-
「$border」框線:「0,1,T,R,B,L」
-
「$ln」下一個元件的位置:「0(預設)右邊;1下行最左邊;2目前元件下方」
-
「$align」對齊方向:「L,C,R,J」
-
「$fill」是否填色:「true為不透明;false透明」
-
「$link」加入連結
-
「$stretch」延伸:0不延伸;1字大於格寬才縮放文字;2一律縮放文字到格寬;3字大於格寬才縮放字距;4一律縮放字距到格寬、「$ignore_min_height」自動忽略最小高度
-
「$calign」格內對齊:「T格上,C格中,B格下,A字上,L字底,D字下」
-
「$valign」垂直對齊:「T,C,B」
-
「$reseth」若true會重設最後一格的高度
-
「$autopadding」自動調整內距
-
「$x、$y」左上角起始位置
-
「$ishtml」請設為false
-
「$maxh」高度上限(需>$h)
-
「$fitcell」自動縮放字大小到格內
-
「$html」內容(屬性一定要用雙引號)