# TCPDF筆記
###### tags: `PHP`
## 套件安裝
* composer安裝
```bash
composer require tecnickcom/tcpdf
```
* 利用composer載入tcpdf
```php
<?php
include __DIR__."/vendor/autoload.php";
```
## 物件初始化
* 建立新的 TCPDF 物件
```php
<?php
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
```
* 參數說明:
| 預設值 | 可能的值 | 作用說明 | 備註 |
| ------------------------------- | ------------------------------------------------------------- | --------------------- | -------------------------------------------------- |
| `PDF_PAGE_ORIENTATION` or `'P'` | `'P'` 直式<br>`'L'` 橫式 | 頁面方向 | |
| `PDF_UNIT` or `'mm'` | `'pt'`:point<br>`'mm'`:公釐<br>`'cm'`:公分<br>`'in'`:英吋 | 文字度量單位 | 1 pt = 1/72 in<br>1 pt = 0.35 mm<br>1 in = 2.54 cm |
| `PDF_PAGE_FORMAT` or `'A4'` | `'A3'`、`'A4'`、`'B4'` | 紙張尺寸 | `tcpdf_static.php` |
| `true` | | 是否使用unicode | |
| `'UTF-8'` | | 文件編碼 | |
| `false` | | 使用磁碟快取 | DEPRECATED |
| `false` | | PDF/A模式 | |
### 常用語法
```php=
<?php
$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 的參數:
1. 「$family」字型名稱
2. 「$style」樣式:B粗、I斜、U底線、D刪除線、O上方線
3. 「$size」字型大小(預設為12pt)
4. 「$fontfile」字型檔
5. 「$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):
1. 「$html」內容(屬性一定要用雙引號)
2. 「$ln」下一個元件的位置:「0(預設)右邊;1下行最左邊;2目前元件下方」
3. 「$fill」是否填色:「true為不透明;false透明」
4. 「$reseth」若true會重設最後一格的高度
5. 「$cell」自動增加內距
6. 「$align」對齊方向:「L;C;R」。
* Output的參數如下:
1. 「$name」檔名
2. 「$dest」輸出模式:「I: 在瀏覽器中呈現 (預設);D: 強制下載(無法用中文檔名);F: 存在主機空間裡;S: 以文字方式傳回文件;FI: 等同F+I :FD: 等同F+D;E: 以郵件附件方式傳回文件。