tyclipso / fpdm
使用FPDM类填充PDF表单,由FPDF作者Olivier编写。除非文件中另有说明,否则复选框解析为关闭
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-17 22:49:56 UTC
README
包
FPDM类允许填写PDF表单,即填充PDF文件的字段。它是由FDPF库的作者Olivier Plathey 开发,并已作为Skript 93发布。
我创建这个仓库有以下原因
- 通过 composer 使当前的FPDM源代码可用,通过类映射进行自动加载
- 修复错误
- 改进(对原始代码库的更改以
//FIX: change description
开头,以//ENDFIX
结尾)- 新增:支持复选框(默认禁用,通过
$pdf->useCheckboxParser = true;
激活) 0375dd9 v2.9.2
- 新增:支持复选框(默认禁用,通过
版本
基于fpdf.org提供的版本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';
对原始代码的修改
类映射与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()
)来使用遗留类。
这就是我选择使用类图而不是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(); ?>
查看结果这里。