cgoit / contao-form-fill-pdf-bundle
根据contao表单填充PDF表单
Requires
- php: ^8.1 || ^8.2 || ^8.3
- codefog/contao-haste: ^5.1
- contao/core-bundle: ^5.3
- doctrine/dbal: ^3.3
- mikehaertl/php-pdftk: ^0.13.0
- mvo/contao-group-widget: ^1.5
- symfony/config: ^6.1
- symfony/dependency-injection: ^6.1
- symfony/filesystem: ^6.1
- symfony/http-kernel: ^6.1
Requires (Dev)
- contao/manager-plugin: ^2.3.1
- phpunit/phpunit: ^10.3
- terminal42/contao-build-tools: dev-main
Suggests
- terminal42/contao-leads: Storing
- terminal42/notification_center: Sending
Conflicts
- contao/manager-plugin: <2.0 || >=3.0
README
使用此插件,您可以使用任何contao表单的提交数据来填充PDF表单。
设置
当前仅通过composer或contao管理器进行设置。只需要求或搜索 cgoit/contao-form-fill-pdf-bundle
并安装它。
要求
重要:该插件需要服务器上存在 pdftk
二进制文件。如果服务器上不存在或不可用 pdftk
二进制文件,则无法使用此插件填充PDF模板。
您可能可以提供适合您体系结构的相应二进制文件并相应设置您的 LD_LIBRARY_PATH
,但这尚未经过测试,我无法保证这会有效。
此插件如何工作?
坦白说:此插件本身并不做什么。将您的数据与PDF模板合并的大部分繁重工作是由出色的库 php-pdftk
完成的。此插件仅准备所有数据,然后与选定的PDF模板一起提供给此库。因此,php-pdftk
库的所有限制(例如,UTF-8支持等)也都是此插件的限制。
如何使用?
准备您的PDF模板
首先,您需要一个PDF模板,您将在此模板中合并表单数据。您可以使用任何能够创建PDF表单的工具来创建模板。在此模板内部,使用SimpleTokens为表单字段命名。这样做后,数据将随后合并到这些字段中。
您可以使用以下SimpleTokens
##form_*##
:* 是contao表单中表单字段的名称##formconfig_*##
:* 是contao表单的属性,例如id
##admin_email##
:管理员的电子邮件地址##filenames##
:提交的文件名列表
特殊情况
目前我知道三个必须讨论的特殊情况。
- 单选按钮:如果您的HTML表单中有单选按钮菜单,您必须注意PDF表单中的
on
值与HTML单选按钮中的相应值相匹配。例如,如果您的单选按钮名为test
,值为1
、A
和all
,则您必须在PDF表单中添加三个单选按钮。所有这些都命名为##form_test##
。单选按钮的on
值分别为1
、A
和all
。 - 复选框:当您的表单中有复选框时,用户通常可以在前端选择多个复选框。每个复选框都有一个不同的值。在您的PDF模板中,您必须在字段名前加上下划线来附加此值。例如,如果您的HTML表单中的复选框名为
test
,值为1
、A
和all
,则您的PDF模板中的字段名将为##form_test_1##
、##form_test_A##
和##form_test_all##
。PDF表单中复选框的on
值始终为1
。 - 文件上传:目前无法将文件本身包含在合并后的PDF中。如果您将文件添加到PDF中,只有路径(作为字符串)会被合并。
准备您的表单
在您表单的配置中,您可以通过勾选“合并PDF模板”来启用将数据合并到您的PDF模板中。
然后您需要配置至少一个要合并的PDF模板。
与其他扩展的兼容性
如上所述,此扩展与terminal42/notification_center
和terminal42/contao-leads
配合得非常好。如果您想将此扩展与terminal42/contao-mp_forms
结合使用,也有解决方案。
与terminal42/contao-mp_forms
一起使用
如果您需要在由terminal42/contao-mp_forms
创建的多步表单中收集一些数据,并且想在最终提交表单之前,例如在摘要步骤中显示合并后的PDF,您可以在表单配置中添加一个新的表单字段“生成PDF”。如果此表单字段存在,它将合并到这一步收集的所有数据到选定的PDF中。这样做后,您可以通过上面描述的已知简单标记引用合并后的PDF。
如何测试
为了方便起见,本捆绑包中包含了一个示例PDF模板和一个示例表单。
在安装/迁移过程中,示例PDF表单以及一个sql脚本被复制到files/form-fill-pdf
。您可以将contao-form-fill-pdf-demo-form.sql
导入到您的数据库中。这将创建一个包含所有可能的表单字段类型(文本字段、复选框菜单、密码字段等)的contao表单。也复制了sample-form.pdf
,可以用来合并此contao表单的数据。