首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 使用 MPDF 類生成 PDF 完整教學

     編輯:PHP 綜合知識

MPDF 是基於 FPDF/FPDI 的 PHP 類庫,支援 UTF-8、CSS 2.1/3 部分屬性、HTML 直接轉 PDF,適合發票、報表、合約等文件生成。本文涵蓋安裝、基本用法、中文支援、頁首頁尾、水印、效能優化。

1. 安裝 (推薦 Composer)

composer require mpdf/mpdf

或官網下載 ZIP 包 手動引入。

2. 基本生成流程

<?php
require_once __DIR__ . '/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf([
    'mode' => '+aCJK',      // 中文支援關鍵
    'format' => 'A4',
    'margin_top' => 20,
    'margin_bottom' => 20,
]);

$html = '<h1>Hello MPDF</h1><p>這是第一個 PDF。</p>';
$mpdf->WriteHTML($html);
$mpdf->Output('first.pdf', \Mpdf\Output\Destination::DOWNLOAD);
?>

3. 中文完整配置 (參考前文 58660)

  • `config.php`:`$this->autoLangToFont = true;`
  • 實例化:`'mode' => '+aCJK'`
  • 註冊字型:`ttfonts/` + `config_fonts.php` 註冊 `notosanscjktc` 等。

4. 進階功能

頁首頁尾

$mpdf->SetHTMLHeader('
<table width="100%">
<tr><td>公司名稱</td><td style="text-align:right;">頁碼: {PAGENO}/{nbpg}</td></tr>
</table>
', 'O'); // 'O' 奇數頁,'E' 偶數頁

$mpdf->SetHTMLFooter('
<div style="text-align:center; font-size:8pt;">機密文件</div>
');

水印

$mpdf->SetWatermarkText('CONFIDENTIAL');
$mpdf->showWatermarkText = true;
$mpdf->watermark_font = 'notosanscjktc';
$mpdf->watermarkTextAlpha = 0.1;

頁碼與目錄

$mpdf->AddPage('NEXT', '', '', '', '');
$mpdf->WriteHTML('<tocpagebreak><h1>目錄</h1><toc>');
// 內容頁使用 <h2>...</h2> 自動建立書籤

保護與加密

$mpdf->SetProtection(
    ['print', 'copy'], // 允許權限
    'user_pass',       // 使用者密碼
    'owner_pass',      // 擁有者密碼
    128                // 加密長度
);

5. 效能與記憶體優化

  • 大量資料分批 `WriteHTML`,避免單次巨大字串佔用記憶體。
  • 關閉未用功能:`$mpdf->useSubstitutions = false;` (若不需字型替換)。
  • 臨時檔案目錄:`$mpdf->tempDir = '/custom/tmp/';` (需可寫入)。
  • 若生成超大 PDF,考慮分割生成再合併(如 `FPDI` 合併)。

6. 常見問題排查

7. 替代方案對比

問題解決
中文顯示方框檢查 `+aCJK`、字型註冊、`autoLangToFont`
CSS 不生效MPDF 僅支援部分 CSS,避免 Flex/Grid,用 table 布局
圖片不顯示路徑需為絕對路徑或相對執行腳本路徑;支援 data URI
記憶體耗盡增加 `memory_limit`、分批輸出、使用 `Output('', 'S')` 回傳字串再分塊輸出
生成速度慢關閉 `useSubstitutions`、減少字型檔案大小、啟用 OpCache

MPDF 仍是 PHP 專案中**最平衡**的 HTML 轉 PDF 方案,配合正確中文配置與效能調優,可滿足多數業務需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
庫優點缺點
MPDFHTML/CSS 支援最好、中文友善、功能全大檔案記憶體佔用高、速度較慢
TCPDF純 PHP、無依賴、支援條碼HTML/CSS 支援弱、中文配置繁瑣
DomPDFCSS 2.1 支援較好大檔案極慢、記憶體爆炸
wkhtmltopdf (外部工具)WebKit 渲染、完美 CSS/JS需安裝二進制、併發需管理進程池