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 檔案都會自動載入。