analize/mpdf-analize

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

v1.0.5 2024-05-20 11:57 UTC

This package is auto-updated.

Last update: 2024-09-20 12:50:16 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,可能与最后一个稳定版本不同。

这个分支的目标是移除索引后面的空白页,以下是具体步骤。

添加 MpdfAnalize 包以启用此修改

composer require wendel-ulhoa/laravel-mpdf-analize
composer require analize/mpdf-analize
use Analize\LaravelMpdfAnalize\LaravelMpdfAnalizeWrapper;

/* Criando uma instância da classe LaravelMpdfAnalizeWrapper, biblioteca modificada para que possa retirar a página em branco após os índices. */
$mpdf = new LaravelMpdfAnalizeWrapper();

/* Obtendo a renderização do PDF utilizando o Mpdf e a separação por chuncks para não atingir o limite de backtrack */
$pdf = $mpdf->chunkLoadView('<!--chunk-->', 'view', [], [], $configs);

/* Remove a página em branco que era adicionada após os índices, (Caso queira que volte a fazer a mesma impressão é só comentar a linha abaixo.). */ 
$pdf->getMpdf()->deletePage(2, true);

要求

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 用于生成条形码,或 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();

这将把 PDF 内联输出到浏览器,内容类型为 application/pdf

设置 & 配置

所有 配置指令 都可以通过构造函数的 $config 参数设置。

建议通过 tempDir 配置变量设置自己的临时目录。该目录必须具有对 mPDF 用户(通常是 cliwebserverfpm)的写入权限(推荐模式为 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标签,因为StackOverflow用户更有可能及时回答您的问题。

贡献

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

单元测试

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

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

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

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