adrolli/fpdm

使用PHP填充PDF表单

dev-master 2023-05-29 00:03 UTC

This package is auto-updated.

Last update: 2024-08-29 02:50:24 UTC


README

此包是codeshell/fpdm的分支。我需要它与php 8.1兼容并通过composer可用,因此创建了此分支。我打算将来只将PDF表单填写功能放入一个完全兼容php 8.1的库中。

FPDM类允许填写PDF表单,即填充PDF文件的字段。它由Olivier Plathey开发,是FDPF库的作者,并作为Skript 93发布。

我创建此存储库有以下原因

  • 通过composer使当前FPDM源代码可通过classmaps自动加载
  • 错误修复
    • 修复:与PHP 7.x的兼容性问题 e376dc1 v2.9.1
    • 修复:在多个文件中填写表单(错误的缓冲区使用,无效的偏移量) e376dc1 v2.9.1
    • 修复:将ASCII对象名称转换为utf-8 1eddba7 v2.9.2
  • 改进(对原始代码库的更改以//FIX: change description开头,以//ENDFIX结尾)
    • 添加:支持复选框(默认禁用,通过$pdf->useCheckboxParser = true;激活) 0375dd9 v2.9.2

版本

基于版本2.9(2017-05-11)可从fpdf.org/en/script/script93.php获取。

注意:如果您发现新版本已托管在fpdf.org上,请随时通过简要说明通知我,以确保我不会错过。

此存储库仅包含为表单填写编写的单独的php类(FPDM)。如果您正在寻找包含主要FPDF库的存储库,请前往github.com/Setasign/FPDF

再次感谢Olivier Plathey提供易于使用的脚本以及他的FPDF库!

安装

Composer

在您的应用程序中使FPDM可用的一种首选方法是使用以下命令通过composer安装它:

composer require tmw/fpdm

使用

Composer(自动加载)

通过将以下内容添加到您的代码中自动加载 FPDM类文件

require 'vendor/autoload.php';

独立脚本(旧版)

通过调用以下内容加载顶级入口点:

require_once '/abolute/path/to/fpdm.php';

require_once './relative/path/to/fpdm.php';

对原始代码的定制

classmaps与psr-4(或:旧版代码与现代框架如Laravel)

使用命名空间和遵循PSR-4: 自动加载器自动加载类是理想的。特别是使用供应商命名空间可以减少命名冲突的风险。

然而,FPDM已经存在很长时间了,因此被许多使用非命名空间代码的项目使用(我称它们为旧项目)。旧项目通过调用$mypdf = new FPDM()实例化FPDM,这是未经命名的,但默认使用全局命名空间和非命名空间代码。

使用psr-4会将类自动加载到子命名空间(例如\codeshell\fpdm\FPDM)而不是全局命名空间(例如\FPDM),因此会破坏任何旧代码,无论它使用的是new FPDM()还是new \FPDM()

类映射是一个折衷方案。 它允许利用Composers的自动加载和依赖管理。然而,类被添加到全局命名空间。旧项目可以在不重构代码的情况下切换到Composers。较新的项目(例如使用laravel等框架的项目,这些框架严重依赖于命名空间)仍然可以通过使用完全限定名(在这种情况下,类名前加上全局前缀运算符,如new \FPDM())来使用旧类

这就是我为什么在FPDM中使用类映射而不是PSR-4的原因。请告诉我是否有使用类映射而无法与现代框架一起工作的用例。

复选框

我添加了对复选框的支持。该功能测试不多,但对我有效。可以通过useCheckboxParser = true启用

<?php
$fields = array(
    'my_checkbox'    => 'anything that evaluates to true.', // checkbox will be checked;  Careful, that includes ANY non-empty string (even "no" or "unchecked")
    'another_checkbox' => false, // checkbox will be UNchecked; empty string or 0 work as well
);

$pdf = new FPDM('template.pdf');
$pdf->useCheckboxParser = true; // Checkbox parsing is ignored (default FPDM behaviour) unless enabled with this setting
$pdf->Load($fields, true);
$pdf->Merge();
$pdf->Output();

您不需要了解复选框状态的技术名称。它们在解析过程中检索。

原始信息页面

以下所有内容都来自http://www.fpdf.org/en/script/script93.php

信息

作者:Olivier

许可:FPDF

描述

此脚本允许将数据合并到PDF表单中。给定一个带有文本字段的模板PDF,可以以两种不同的方式注入值

  • 从PHP数组
  • 从FDF文件

生成的文档由Output()方法生成,该方法与FPDF相同。

注意:如果您的模板PDF与此脚本不兼容,您可以使用PDFtk以这种方式进行处理

pdftk modele.pdf output modele2.pdf

然后再次使用modele2.pdf尝试。

示例

此示例演示了如何从数组合并数据

<?php

/***************************
  Sample using a PHP array
****************************/

$fields = array(
    'name'    => 'My name',
    'address' => 'My address',
    'city'    => 'My city',
    'phone'   => 'My phone number'
);

$pdf = new FPDM('template.pdf');
$pdf->Load($fields, false); // second parameter: false if field values are in ISO-8859-1, true if UTF-8
$pdf->Merge();
$pdf->Output();
?>

查看结果这里