mPDF 是一個 PHP 函式庫,它可以從 UTF-8 編碼的 HTML 產生 PDF 檔案。
它基於 FPDF 和 HTML2FPDF(請參閱 CREDITS),並具有許多增強功能。 mPDF 由 Ian Back 編寫,並根據 GNU GPL v2 許可證發布。
如果您在 mPDF GitHub 儲存庫主頁或 Packagist 上查看此文件,請注意,預設儲存庫分支是development
,可能與上一個穩定版本不同。
mPDF >= 7.0
支援PHP >=5.6 <7.3.0
自mPDF v7.1.7
起支援PHP 7.3
自mPDF v8.0.4
起支援PHP 7.4
自mPDF v8.0.10
起支援PHP 8.0
從mPDF v8.0.13
開始支援PHP 8.1
從mPDF v8.1.3
開始支援PHP 8.2
從mPDF v8.2.1
開始支援PHP 8.3
從mPDF v8.2.5
開始支援PHP 8.4
必須載入 PHP mbstring
和gd
擴充。
某些進階功能可能需要額外的擴展,例如用於壓縮輸出的zlib
和嵌入資源(例如字體)、用於產生條碼的bcmath
或用於字元集轉換和 SVG 處理的xml
。
mPDF 在使用單執行緒伺服器(例如php -S
取得外部 HTTP 資源時存在一些問題。建議使用適當的伺服器,例如 nginx (php-fpm) 或 Apache。
考慮透過捐贈任何價值來支持 mPDF 的開發。捐贈按鈕可以在文件的主頁上找到。
官方安裝方法是透過composer及其packagist套件mpdf/mpdf。
$ composer require mpdf/mpdf
該庫最簡單的用法(自 7.0 版起)如下:
<?phprequire_once __DIR__ 。 '/vendor/autoload.php';$mpdf = new MpdfMpdf();$mpdf->WriteHTML('<h1>Hello world!</h1>');$mpdf->Output();
這會將 PDF 作為application/pdf
內容類型內嵌輸出到瀏覽器。
所有設定指令都可以透過建構函式的$config
參數設定。
建議透過tempDir
配置變數設定自己的暫存目錄。對於使用 mPDF 的使用者(通常是cli
、 webserver
、 fpm
),目錄必須具有寫入權限(建議使用模式775
)。
警告: mPDF 將清理臨時目錄中舊的暫存檔案。選擇僅適用於 mPDF 的路徑。
<?php$mpdf = new MpdfMpdf(['tempDir' => __DIR__ . '/tmp']);
預設情況下,臨時目錄將位於供應商目錄內,並且具有post_install
Composer 腳本的寫入權限。
有關自訂臨時目錄的更多信息,請參閱手冊中“安裝和設定”部分中“臨時文件資料夾”的註釋。
如果您遇到問題,請閱讀手冊中有關故障排除的部分。
mPDF 整體來說是一個相當過時的軟體。如今,有更好的替代方案,儘管不是用 PHP 編寫的。
如果您無法使用非 PHP 方法產生 PDF 文件,或者您想利用 mPDF 相對於瀏覽器方法的一些優勢(顏色處理、預先列印、條碼支援、頁首和頁尾、頁碼、目錄等),請使用 mPDF但請注意,可能需要為mPDF 客製化的HTML/CSS 範本。
如果您正在尋找最先進的 CSS 支持,將現有 HTML 頁面鏡像為 PDF,請使用無頭 Chrome。
mPDF 仍將進行更新,以增強一些內部功能並支援較新版本的 PHP,但很可能不會實現更好和/或較新的 CSS 支援。
線上手冊可在 https://mpdf.github.io/ 取得。
對於一般問題或疑難排解,請使用討論。
您也可以使用 Stack Overflow 上的 mpdf 標籤,因為 StackOverflow 使用者群組更有可能及時回覆您。
在提交問題和拉取請求之前,請閱讀 CONTRIBUTING.md 文件。
mPDF 的單元測試是使用 PHPUnit 完成的。
首先,在 mPDF 根目錄中從命令列執行composer install
(您需要先安裝 Composer)。
若要執行測試,請在 mPDF 根目錄中從命令列執行composer test
。
非常感謝為 mPDF 編寫單元測試的任何幫助。如果您想提供協助,請注意,在單元測試時,位於/tests/
目錄中的任何 PHP 檔案都會自動載入。