mpdf/mpdf

PHP库,用于从UTF-8编码的HTML生成PDF文件

支持包维护!
www.paypal.me/mpdf

安装次数 52,141,063

依赖关系: 512

建议者: 76

安全: 1

星标 4,361

关注者: 143

分支 1,064

开放性问题: 324

v8.2.4 2024-06-14 16:06 UTC

README

mPDF是一个PHP库,用于从UTF-8编码的HTML生成PDF文件。

它基于FPDFHTML2FPDF(见CREDITS),增加了一些功能。mPDF由Ian Back编写,并使用GNU GPL v2许可证发布。

Latest Stable Version Total Downloads License

⚠ 如果您在mPDF GitHub存储库主页或Packagist上查看此文件,请注意默认存储库分支为development,可能不同于最后一个稳定版本。

需求

PHP版本和扩展

  • PHP >=5.6 <7.3.0支持mPDF >= 7.0
  • PHP 7.3mPDF v7.1.7起支持
  • PHP 7.4mPDF v8.0.4起支持
  • PHP 8.0mPDF v8.0.10起支持
  • PHP 8.1mPDF v8.0.13起支持
  • PHP 8.2mPDF v8.1.3起支持
  • PHP 8.3mPDF v8.2.1起支持

PHP必须加载mbstringgd扩展。

可能还需要额外的扩展,例如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配置变量设置自己的临时目录。目录必须对使用mPDF的用户有写权限(推荐模式为775)。

警告: 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标签,因为Stack Overflow的用户更有可能及时回答您的问题。

贡献

在提交问题和拉取请求之前,请阅读CONTRIBUTING.md文件。

单元测试

mPDF的单元测试使用PHPUnit进行。

要开始,请在mPDF根目录下从命令行运行composer install(您需要先安装composer)。

要执行测试,请在mPDF根目录下从命令行运行composer test

任何为mPDF编写单元测试的帮助都将受到高度赞赏。如果您想帮忙,请注意,位于/tests/目录中的任何PHP文件在单元测试时都将自动加载。