rossaddison / mpdf
PHP 库,用于从 UTF-8 编码的 HTML 生成 PDF 文件
Requires
- php: ^5.6 || ^7.0 || ~8.0.0 || ~8.1.0
- ext-gd: *
- ext-mbstring: *
- myclabs/deep-copy: ^1.7
- paragonie/random_compat: ^1.4|^2.0|^9.99.99
- php-http/message-factory: ^1.0
- psr/http-message: ^1.0
- psr/log: ^1.0 || ^2.0
- setasign/fpdi: ^2.1
Requires (Dev)
- mockery/mockery: ^1.3.0
- mpdf/qrcode: ^1.1.0
- squizlabs/php_codesniffer: ^3.5.0
- tracy/tracy: ^2.4
- yoast/phpunit-polyfills: ^1.0
Suggests
- ext-bcmath: Needed for generation of some types of barcodes
- ext-xml: Needed mainly for SVG manipulation
- ext-zlib: Needed for compression of embedded resources, such as fonts
This package is auto-updated.
Last update: 2023-09-24 14:17:07 UTC
README
mPDF 是一个 PHP 库,可以从 UTF-8 编码的 HTML 生成 PDF 文件。
它基于 FPDF 和 HTML2FPDF (见 CREDITS),并进行了许多增强。mPDF 由 Ian Back 编写,并按照 GNU GPL v2 许可 发布。
⚠ 如果您正在 mPDF GitHub 仓库主页或 Packagist 上查看此文件,请注意默认仓库分支是
development
,可能与最新稳定版本不同。
要求
PHP 版本和扩展
mPDF >=7.0
支持PHP ^5.6 || ~7.0.0 || ~7.1.0 || ~7.2.0
PHP 7.3
自mPDF v7.1.7
支持PHP 7.4
自mPDF v8.0.4
支持PHP 8.0
自mPDF v8.0.10
支持PHP 8.1
自mPDF v8.0.13
支持
PHP mbstring
和 gd
扩展必须加载。
对于一些高级功能(例如,使用 zlib
压缩输出和嵌入资源,如字体;使用 bcmath
生成条形码;使用 xml
进行字符集转换和 SVG 处理),可能需要其他扩展。
已知的服务器注意事项
mPDF 在使用单线程服务器(如 php -S
)获取外部 HTTP 资源时存在一些问题。建议使用 nginx (php-fpm) 或 Apache 等适当的服务器。
支持我们
请考虑通过捐赠任何金额来支持 mPDF 的发展。可以在 文档主页 找到 捐赠按钮。
安装
官方安装方法是使用 composer 及其 Packagist 包 mpdf/mpdf。
$ composer require mpdf/mpdf
使用
该库的最简单用法(自 7.0 版本以来)如下所示
<?php require_once __DIR__ . '/vendor/autoload.php'; $mpdf = new \Mpdf\Mpdf(); $mpdf->WriteHTML('<h1>Hello world!</h1>'); $mpdf->Output();
这将使浏览器以 application/pdf
内容类型输出 PDF 文件。
设置与配置
可以通过构造函数的 $config
参数设置所有 配置指令。
建议通过 tempDir
配置变量设置自己的临时目录。该目录必须具有写权限(建议模式为 775
)供使用 mPDF 的用户(通常是 cli
、webserver
、fpm
)。
警告: mPDF 将清理临时目录中的旧临时文件。请选择仅用于 mPDF 的专用路径。
<?php $mpdf = new \Mpdf\Mpdf(['tempDir' => __DIR__ . '/tmp']);
默认情况下,临时目录将位于 vendor 目录内,并且将在 post_install
composer 脚本中获得写权限。
有关自定义临时目录的更多信息,请参阅 Folder for temporary files 部分 手册 中的安装与设置部分。
如果遇到问题,请阅读手册中关于 故障排除 的章节。
关于 CSS 支持和发展状态
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 文件在单元测试时都将自动加载。