wayup/fpdi

维护者

详细信息

github.com/WAYUP-in/FPDI

主页

源代码

资助包维护!
Tidelift

2.4.1 2022-05-13 16:57 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License

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

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

FPDI也可以用作TCPDFtFPDF的扩展。

使用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参考可在此处获取:这里