omelya / mpdf

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

维护者

详细信息

github.com/Omelya/mpdf

源代码

v1.0.0 2023-08-18 11:21 UTC

This package is auto-updated.

Last update: 2024-09-18 14:50:59 UTC


README

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

它基于FPDFHTML2FPDF(见贡献者名单),并添加了一些增强功能。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需要加载mbstringgd扩展。

对于一些高级功能,可能需要额外的扩展,例如用于输出和嵌入资源(如字体)的压缩的zlib,用于生成条码的bcmath,或用于字符集转换和SVG处理的xml

已知的服务器注意事项

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脚本中获得写权限。

有关自定义临时目录的更多信息,请参阅临时文件文件夹部分中的说明。

如果您遇到问题,请阅读手册中关于 故障排除 的章节。

关于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文件在单元测试时都会自动加载。