本文档涉及 FPDI 2。版本 1 已弃用并且开发已停止。
FPDI 是 PHP 类的集合,可帮助开发人员从现有 PDF 文档中读取页面并将其用作 FPDF 中的模板,FPDF 由 Olivier Plathey 开发。除了 FPDF 的副本之外,FPDI 不需要任何特殊的 PHP 扩展。
FPDI 也可以用作 TCPDF 或 tFPDF 的扩展。
由于 FPDI 可以与 FPDF、TCPDF 或 tFPDF 一起使用,因此我们没有在主composer.json 文件中添加固定依赖项。您需要自行将依赖项添加到您选择的 PDF 生成库中。
要将 FPDI 与 FPDF 结合使用,请在 Composer.json 文件中包含以下内容:
{"require": {"setasign/fpdf": "1.8.*","setasign/fpdi": "^2.5"} }
如果你想使用 TCPDF,你必须将你的composer.json 更新为:
{"require": {"tecnickcom/tcpdf": "6.6.*","setasign/fpdi": "^2.5"} }
如果你想使用 tFPDF,你必须将你的composer.json更新为:
{"require": {"setasign/tfpdf": "1.33.*","setasign/fpdi": "^2.3"} }
如果您不使用 Composer,只需在 /src 文件夹中添加 autoload.php 即可:
require_once('src/autoload.php');
如果您实现了 PSR-4 自动加载器,只需按如下方式注册 src 路径:
$loader = new ExamplePsr4AutoloaderClass;$loader->register();$loader->addNamespace('setasignFpdi', 'path/to/src/');
版本 2 是从头开始完全重写 FPDI,其中包含:
命名空间代码
干净且最新的代码库和风格
PSR-4 兼容自动加载
性能提升高达 100%
更少的内存消耗
本机支持从字符串或流资源读取 PDF
支持文件头前包含“无效”数据的文档
优化页面树解析
个别异常的使用
多种测试类型(单元测试、功能测试和视觉测试)
我们试图保持主要方法和逻辑工作流程与版本 1 相同,但请注意,更新到版本 2 时应考虑一些不兼容的更改:
您需要使用src/autoload.php
文件而不是classes/FPDI.php
加载代码。
类和特征现在已命名: setasignFpdi
不再支持以斜线开头的页面边界,例如/MediaBox
。删除斜杠或使用常量PdfReaderPageBoundaries
。
useTemplate()
或getTemplateSize()
方法的参数 $x、$y、$width 和 $height 现在具有更符合逻辑的正确默认值。现在,传递0
作为宽度或高度将导致InvalidArgumentException
。
getTemplateSize()
的返回值已更改为具有更多按键和可重用性的数组:使用width
代替w
,使用height
代替h
。
如果您想将FPDI 与 TCPDF 一起使用,您需要重构代码以使用TcpdfFpdi
类(自 2.1 起;之前是TcpdfFpdi
)而不是FPDI
。
一个简单的示例,导入单个页面并将其放置到新创建的页面上:
AddPage();//设置源文件$pdf->setSourceFile("Fantastic-Speaker.pdf");//导入第1页$tplId = $pdf->importPage(1);//使用导入的页面并将其放置在点 10,10 处,宽度为 100 mm$pdf->useTemplate($tplId, 10, 10, 100);$pdf->输出();
此处提供完整的最终用户文档和 API 参考。