3. 另有基於TCPDF的html2pdf專案,對中文支援不佳(無法自動換行),故不推薦使用。
4. 建立空白PDF文件,其中 TCPDF的建構方法中,使用參數說明如下: ```
include_once "header.php";
require_once(TADTOOLS_PATH.'/tcpdf/tcpdf.php');
$pdf = new TCPDF("P", "mm", "A4", true, 'UTF-8', false);
//PDF內容設定
$pdf->Output('snews.pdf', 'D');
```
- (1) `$orientation`頁面方向,預設為P(直式),橫向為L,空值則自動判斷
- (2) `$unit`度量單位,pt、mm(預設)、cm、in
- (3) `$format`紙張大小,預設為 A4(210 x 297mm)
- (4) `$unicode`是否使用unicode,預設為true
- (5) `$encoding`文件編碼,預設為 UTF-8
- (6) `$diskcache`使用磁碟快取,true 會減少記憶體用量,但效能會變差,預設為false
- (7) `$pdfa`使用PDF/A模式(長期保存的電子文件格式),預設為false。
5. Output的參數:
- `$name`檔名;
- `$dest`輸出模式:
- `I`: 在瀏覽器中呈現 (預設,測試期間建議用此值);
- `D`: 強制下載;
- `F`: 存在主機空間裡;
- `S`: 以文字方式傳回文件;
- `FI`: 等同F+I :
- `FD`: 等同F+D;
- `E`: 以郵件附件方式傳回文件。
### 三、 常用基本架構
```
$pdf->setPrintHeader(false); //不要頁首
$pdf->setPrintFooter(false); //不要頁尾
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); //設定自動分頁
$pdf->setFontSubsetting(true); //產生字型子集(有用到的字才放到文件中)
$pdf->SetFont('droidsansfallback', '', 12, '', true); //設定字型
$pdf->SetMargins(15, 15); //設定頁面邊界,
$pdf->AddPage(); //新增頁面,一定要有,否則內容出不來
```
1. SetFont 的參數:
- (1) `$family`字型(`droidsansfallback `是自加的,`msungstdlight`細明體是內建)
- (2) `$style`樣式:`B`粗、`I`斜、`U`底線、`D`刪除線、`O`上方線
- (3) `$size`字型大小(預設為12pt)
- (4) `$fontfile`字型檔
- (5) `$subset`使用文字子集
### 四、 文字流
```
$pdf->Text( $x, $y, $txt, $fstroke = false, $fclip = false, $ffill = true, $border = 0, $ln = 0, $align = '', $fill = false, $link = '', $stretch = 0, $ignore_min_height = false, $calign = 'T', $valign = 'M', $rtloff = false );
```
1. Text的參數:
- (1) `$x`、`$y`左上角起始位置;常搭配`GetX()`、`SetX()`或`GetY()`、`SetY()`使用。
- (2) `$txt`是呈現內容;`$fstroke`則是外框寬度;`$fclip`是否使用裁剪模式;`$ffill`是否填色;
- (3) `$border`:`0`(無邊框,預設)、`1`(加框)、`L`(左)、`T`(上)、`R`(右)、`B`(下),亦可用陣列來設定樣式,如: ```
array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
```
- (4) `$ln`下一個元件的位置:`0`(預設)右邊;`1`下行最左邊;`2`目前元件下方
- (5) `$align`對齊方向:`L`、`C`、`R`、`J`。
- (6) `$fill` 儲存格背景是否填色(1)或透明(0)。
- (7) `$link` 可加上連結
- (8) `$stretch`延伸:`0`不延伸;`1字`大於格寬才縮放文字;`2`一律縮放文字到格寬;`3`字大於格寬才縮放字距;`4`一律縮放字距到格寬
- (9) `$ignore_min_height`是否自動忽略最小高度
- (10) `$calign`儲存格中的垂直對齊:`T`頂部、`A`字體頂部、`L`字體基線、 `D`字體底部、`B`底部
- (11) `$valign` 文字本身的垂直對齊:`T`頂部、`M`中間、`B`底部
- (12) `$rtloff` 是否使用頁面左上角作為原點(x和:y初始位置)。
### 五、 將HTML轉為PDF
1. 務必先將網頁內容整理好,如:利用`strip_word_html()`來過濾。 ```
function strip_word_html($text, $allowed_tags = '
| ')
{
mb_regex_encoding('UTF-8');
//replace MS special characters first
$search = array('/‘/u', '/’/u', '/“/u', '/”/u', '/—/u');
$replace = array('\'', '\'', '"', '"', '-');
$text = preg_replace($search, $replace, $text);
if (mb_stripos($text, '/*') !== false) {
$text = mb_eregi_replace('#/\*.*?\*/#s', '', $text, 'm');
}
$text = preg_replace(array('/<([0-9]+)/'), array('< $1'), $text);
$text = strip_tags($text, $allowed_tags);
$text = preg_replace(array('/^\s\s+/', '/\s\s+$/', '/\s\s+/u'), array('', '', ' '), $text);
$search = array('#<(strong|b)[^>]*>(.*?)(strong|b)>#isu', '#<(em|i)[^>]*>(.*?)(em|i)>#isu', '#]*>(.*?)#isu');
$replace = array('$2', '$2', '$1');
$text = preg_replace($search, $replace, $text);
$num_matches = preg_match_all("/\
|
|