setasign_cn / fpdi_cn
FPDI是一系列PHP类,便于开发者从现有的PDF文档中读取页面,并在FPDF中使用它们作为模板。由于FPDI也可以与TCPDF一起使用,因此没有定义固定的依赖项。请参阅评估依赖项的包建议。
Requires
- php: ^5.6 || ^7.0 || ^8.0
- ext-gd: *
- ext-mbstring: *
- ext-zlib: *
- myclabs/deep-copy: ^1.7
- paragonie/random_compat: ^1.4|^2.0|^9.99.99
- php-http/message-factory: ^1.0
- psr/http-message: ^1.0
- psr/log: ^1.0 || ^2.0
- setasign/fpdi: 2.1
- setasign/fpdi-fpdf: ^2.0
Requires (Dev)
- phpunit/phpunit: ~5.7
- setasign/fpdf: ~1.8
- setasign/tfpdf: 1.31
- squizlabs/php_codesniffer: ^3.5
- tecnickcom/tcpdf: ~6.2
Suggests
- setasign/fpdf: FPDI will extend this class but as it is also possible to use TCPDF or tFPDF as an alternative. There's no fixed dependency configured.
Conflicts
- setasign/tfpdf: <1.31
This package is not auto-updated.
Last update: 2022-06-08 04:41:31 UTC
README
:heavy_exclamation_mark: 本文档参考FPDI 2。版本1已过时,开发已停止。 :heavy_exclamation_mark
FPDI是一系列PHP类,便于开发者从现有的PDF文档中读取页面,并在由Olivier Plathey开发的FPDF中使用它们作为模板。除了FPDF的副本外,FPDI不需要任何特殊的PHP扩展。
安装方式
使用Composer
由于FPDI可以与FPDF、TCPDF或tFPDF一起使用,我们没有在主composer.json文件中添加固定依赖项。您需要自己将依赖项添加到您选择的PDF生成库中。
要使用FPDI与FPDF一起使用,请在您的composer.json文件中包含以下内容
{
"require": {
"setasign/fpdf": "1.8.*",
"setasign/fpdi": "^2.0"
}
}
如果您想使用TCPDF,您必须更新您的composer.json为以下内容
{
"require": {
"tecnickcom/tcpdf": "6.3.*",
"setasign/fpdi": "^2.0"
}
}
如果您想使用tFPDF,您必须更新您的composer.json为以下内容
{
"require": {
"setasign/tfpdf": "1.31.*",
"setasign/fpdi": "^2.3"
}
}
手动安装
如果您不使用composer,只需在/src文件夹中require autoload.php文件。
require_once('src/autoload.php');
如果您已实现PSR-4自动加载器,只需按照以下方式注册src路径
$loader = new \Example\Psr4AutoloaderClass;
$loader->register();
$loader->addNamespace('setasign\Fpdi', 'path/to/src/');
版本1的更改
版本2是从头开始重新编写的FPDI的完整版本,它包括
- 命名空间代码
- 干净且最新的代码库和风格
- PSR-4兼容自动加载
- 性能提升高达100%
- 更少的内存消耗
- 从字符串或流资源中读取PDF的原生支持
- 支持文件头之前的“无效”数据的文档
- 优化页面树解析
- 使用单独的异常
- 几种测试类型(单元测试、功能测试和视觉测试)
我们尽量保持主要方法和逻辑流程与版本1相同,但请注意,有一些不兼容的更改,您在升级到版本2时应考虑。
- 您需要使用
src/autoload.php
文件而不是classes/FPDI.php
文件来加载代码。 - 类和特性现在是命名空间的:
setasign\Fpdi
- 以斜杠开始的页面边界,如
/MediaBox
,不再支持。删除斜杠或使用PdfReader\PageBoundaries
的常量。 - 现在,
useTemplate()
或getTemplateSize()
方法的参数$x、$y、$width和$height具有更合理的默认值。传递0
作为宽度或高度现在将导致InvalidArgumentException
。 getTemplateSize()
的返回值现在已更改为具有更多描述性键和可重用性的数组:使用width
而不是w
,使用height
而不是h
。- 如果您想使用 FPDI 与 TCPDF,您需要重构您的代码以使用类
Tcpdf\Fpdi
(自 2.1 版本起;之前是TcpdfFpdi
)而不是FPDI
。
示例和文档
一个简单的示例,导入单页并将该页放置在新创建的页面上
<?php
use setasign\Fpdi\Fpdi;
// or for usage with TCPDF:
// use setasign\Fpdi\Tcpdf\Fpdi;
// or for usage with tFPDF:
// use setasign\Fpdi\Tfpdf\Fpdi;
// setup the autoload function
require_once('vendor/autoload.php');
// initiate FPDI
$pdf = new Fpdi();
// add a page
$pdf->AddPage();
// set the source file
$pdf->setSourceFile("Fantastic-Speaker.pdf");
// import page 1
$tplId = $pdf->importPage(1);
// use the imported page and place it at point 10,10 with a width of 100 mm
$pdf->useTemplate($tplId, 10, 10, 100);
$pdf->Output();
完整的最终用户文档和 API 参考在此可用。