mpdf/mpdf

GitHub: mpdf/mpdf

一个纯 PHP 实现的 PDF 生成库,可将 UTF-8 编码的 HTML 转换为 PDF 文件。

Stars: 4650 | Forks: 1105

mPDF 是一个 PHP 库,用于从 UTF-8 编码的 HTML 生成 PDF 文件。 它基于 [FPDF](http://www.fpdf.org/) 和 [HTML2FPDF](http://html2fpdf.sourceforge.net/)(参见 [CREDITS](CREDITS.txt)),并进行了大量增强。mPDF 由 Ian Back 编写,并在 [GNU GPL v2 许可证](LICENSE.txt) 下发布。 [![最新稳定版本](https://poser.pugx.org/mpdf/mpdf/v/stable)](https://packagist.org/packages/mpdf/mpdf) [![总下载量](https://poser.pugx.org/mpdf/mpdf/downloads)](https://packagist.org/packages/mpdf/mpdf) [![许可证](https://poser.pugx.org/mpdf/mpdf/license)](https://packagist.org/packages/mpdf/mpdf) # 需求 ## PHP 版本和扩展 - `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` - 自 `mPDF v8.2.6` 起支持 `PHP 8.5` 必须加载 PHP 的 `mbstring` 和 `gd` 扩展。 某些高级功能可能需要额外的扩展,例如用于压缩输出和嵌入资源(如字体)的 `zlib`,用于生成条形码的 `bcmath`,或用于字符集转换和 SVG 处理的 `xml`。 ## 已知服务器注意事项 mPDF 在使用单线程服务器(如 `php -S`)获取外部 HTTP 资源时存在一些问题。建议使用适当的服务器,如 nginx (php-fpm) 或 Apache。 # 安装 官方安装方法是通过 composer 及其 packagist 包 [mpdf/mpdf](https://packagist.org/packages/mpdf/mpdf)。 ``` $ composer require mpdf/mpdf ``` # 用法 该库最简单的用法(自 7.0 版本起)如下: ``` WriteHTML('

Hello world!

'); $mpdf->Output(); ``` 这将以 `application/pdf` Content-type 的形式将 PDF 内联输出到浏览器。 # 设置与配置 所有[配置指令](https://mpdf.github.io/reference/mpdf-variables/overview.html)都可以通过构造函数的 `$config` 参数进行设置。 建议通过 `tempDir` 配置变量设置自己的临时目录。 该目录必须对使用 mPDF 的用户(通常是 `cli`、`webserver`、`fpm`)具有写入权限(建议模式为 `775`)。 **警告:** mPDF 将清理临时目录中的旧临时文件。请选择一个专用于 mPDF 的路径。 ``` __DIR__ . '/tmp']); ``` 默认情况下,临时目录将位于 vendor 目录中,并通过 `post_install` composer 脚本获得写入权限。 有关自定义临时目录的更多信息,请参阅[手册][1]中“安装与设置”部分的[临时文件文件夹](https://mpdf.github.io/installation-setup/folders-for-temporary-files.html)说明。 如果遇到问题,请阅读手册中的[故障排除](https://mpdf.github.io/troubleshooting/known-issues.html)部分。 # 关于 CSS 支持和开发状态 mPDF 整体上是一款相对陈旧的软件。如今虽然有更好的替代方案,但它们并非用 PHP 编写。 如果你无法使用非 PHP 方法生成 PDF 文件,或者希望利用 mPDF 相对于浏览器方法的一些优势——如颜色管理、预打印、条形码支持、页眉和页脚、页码、目录等——请使用 mPDF。 但请注意,可能需要专门为 mPDF 定制 HTML/CSS 模板。 如果你追求顶尖的 CSS 支持,或者需要将现有 HTML 页面镜像转换为 PDF,请使用 headless Chrome。 mPDF 仍将更新以增强某些内部功能并支持更新版本的 PHP,但不太可能实现更好或更新的 CSS 支持。 # 在线手册 在线手册可通过 https://mpdf.github.io/ 访问。 # 常规故障排除 如有一般性问题或故障排除,请使用 [Discussions](https://github.com/mpdf/mpdf/discussions)。 你也可以使用 Stack Overflow 上的 [mpdf 标签](https://stackoverflow.com/questions/tagged/mpdf),因为 StackOverflow 的用户群体更有可能及时回复你。 # 贡献 在提交 issue 和 pull request 之前,请阅读 [CONTRIBUTING.md](https://github.com/mpdf/mpdf/blob/development/.github/CONTRIBUTING.md) 文件。 # 单元测试 mPDF 的单元测试使用 [PHPUnit](https://phpunit.de/) 完成。 首先,在 mPDF 根目录下的命令行中运行 `composer install`(你需要先[安装 composer](https://getcomposer.org/download/))。 要执行测试,请在 mPDF 根目录下的命令行中运行 `composer test`。 非常感谢任何为 mPDF 编写单元测试的帮助。如果你想提供帮助,请注意单元测试时 `/tests/` 目录中的任何 PHP 文件都将被自动加载。
标签:Composer, ffuf, FPDF, GD库, HTML, HTML转PDF, Invoice, Laravel组件, mbstring, mPDF, OpenVAS, Packagist, PDF, PDF生成, PHP, PHP库, Symfony组件, Syscall, UTF-8, Web开发, 中文PDF, 后端开发, 文件转换, 文档生成, 服务器端渲染