cgoit/contao-form-fill-pdf-bundle

根据contao表单填充PDF表单

资助包维护!
cgoIT
Ko Fi

安装: 48

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 0

开放问题: 0

类型:contao-bundle

1.4.0 2024-09-06 09:56 UTC

README

Latest Version on Packagist Dynamic JSON Badge Installations via composer per month Installations via composer total

使用此插件,您可以使用任何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##:提交的文件名列表

特殊情况

目前我知道三个必须讨论的特殊情况。

  1. 单选按钮:如果您的HTML表单中有单选按钮菜单,您必须注意PDF表单中的 on 值与HTML单选按钮中的相应值相匹配。例如,如果您的单选按钮名为 test,值为 1Aall,则您必须在PDF表单中添加三个单选按钮。所有这些都命名为 ##form_test##。单选按钮的 on 值分别为 1Aall
  2. 复选框:当您的表单中有复选框时,用户通常可以在前端选择多个复选框。每个复选框都有一个不同的值。在您的PDF模板中,您必须在字段名前加上下划线来附加此值。例如,如果您的HTML表单中的复选框名为 test,值为 1Aall,则您的PDF模板中的字段名将为 ##form_test_1####form_test_A####form_test_all##。PDF表单中复选框的 on 值始终为 1
  3. 文件上传:目前无法将文件本身包含在合并后的PDF中。如果您将文件添加到PDF中,只有路径(作为字符串)会被合并。

准备您的表单

在您表单的配置中,您可以通过勾选“合并PDF模板”来启用将数据合并到您的PDF模板中。

Enable the merging of data into PDF templates

然后您需要配置至少一个要合并的PDF模板。

Configure the merging of data into a PDF template

与其他扩展的兼容性

如上所述,此扩展与terminal42/notification_centerterminal42/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表单的数据。