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 文件都将自动加载。