setasign/fpdi

FPDI 是一系列 PHP 类,它帮助开发者读取现有 PDF 文档中的页面,并在 FPDF 中使用它们作为模板。由于 FPDI 也支持与 TCPDF 一起使用,因此没有定义固定的依赖关系。请参阅评估依赖项的包建议。

资助包维护!
Tidelift

安装: 91,255,896

依赖项: 212

建议者: 8

安全: 0

星星: 1,037

观察者: 22

分支: 160

开放问题: 4

v2.6.1 2024-09-02 10:17 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License

❗ 本文档指 FPDI 2 版本。1 版本已弃用且开发已停止。❗

FPDI 是一系列 PHP 类,帮助开发者从现有 PDF 文档中读取页面,并在由 Olivier Plathey 开发的 FPDF 中使用它们作为模板。FPDI 除了包含 FPDF 的副本外,还不需要任何特殊的 PHP 扩展。

FPDI 还可以用作 TCPDFtFPDF 的扩展。

使用 Composer 安装

由于 FPDI 可以与 FPDF、TCPDF 或 tFPDF 一起使用,我们未在主 composer.json 文件中添加固定依赖项。您需要自行将依赖项添加到您选择的 PDF 生成库中。

要使用 FPDF 与 FPDI 一起,请在您的 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 \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 参考在此处提供。