【问题标题】:What is simplest way to export form POST data to pre-existing PDF form via PHP?通过 PHP 将表单 POST 数据导出到预先存在的 PDF 表单的最简单方法是什么?
【发布时间】:2015-02-27 05:27:06
【问题描述】:

我已经阅读了很多关于此的内容,并看到了各种库等(例如 FPDF)的提及,但所有方法似乎都有不必要的步骤数、中间文件的创建等。我有用户将填写一个在线表单,然后在服务器端完成和验证后,我想简单地将收集的数据写入现有的 PDF 表单。我不需要创建新的 PDF。我的网站上总会有一个空白的 PDF 表单,我想将其复制、写入,然后通过电子邮件发送。

此外,现在确定如何对 PDF 表单进行逆向工程以执行上述操作。也就是说,无论我使用什么库,我都需要知道如何确定现有表单中的键名等。

有什么想法吗?

问候, 布赖恩

【问题讨论】:

    标签: php forms pdf


    【解决方案1】:

    这不是通过像字符串替换那样将值传递给文件来完成的。需要更多的逻辑。 FPDF 和 PDFLib 都不允许您填写 PDF 表格。此外,您的表单似乎不是普通的 AcroForm,而是更复杂的 XFA 表单。

    如果你想用 PHP 填写这个 PDF 表单,你应该看看 SetaPDF-FormFiller 组件(不是免费的!)。

    就是这么简单:

    $writer = new SetaPDF_Core_Writer_Http('filled-form.pdf');
    $document = SetaPDF_Core_Document::loadByFilename('form.pdf', $writer);
    $formFiller = new SetaPDF_FormFiller($document);
    $fields = $formFiller->getFields();
    $fields['form1[0].#subform[0].Yes[0]']->push();
    $fields['form1[0].#subform[0].No[0]']->pull();
    $fields['form1[0].#subform[0].LastName[0]']->setValue('Wyss');
    ...
    $document->save()->finish();
    

    【讨论】:

    • 有趣。谢谢!据您所知,没有免费的方法可以做到这一点。哇——好贵。也许最好动态创建一个类似于现有表单的 PDF 表单?
    • 如果不需要表单字段,您也可以使用 FPDI。我刚刚回答了一个类似的问题here
    • 刚刚了解 FPDI。似乎是为了阅读 PDF 和构建模板。我不想在 HTML 中重新创建 PDF 的外观。我已经在 HTML 中设置了表单并且它是响应式的。我只需要输出到现有的 PDF 表单或以某种方式在服务器端创建一个至少有点类似于现有表单的新 PDF。谢谢,布赖恩
    • @Brian:我想要 php 格式的 pdf 格式的 xfa 数据。请帮帮我。
    【解决方案2】:

    因此,您本质上需要服务器端填充。

    有各种各样的库可以提供这种能力,例如 iText、pdflib 等。

    另一种选择,特别是对于生产环境而言,是使用实用程序,例如 Appligent 的 FDFMerge;总成本可能会更低,具体取决于您的内部开发费率。

    作为替代方案,您可以通过创建一个 (X)FDF 文件来查看客户端填充,该文件具有对基本 PDF 的正确引用。当这个 FDF 文件在 Acrobat/Reader 中打开时,它会自动拉入基础 PDF(您的空白表单),并用数据填充它。

    FDF 使用 PDF 语法,但非常简单和纯文本(通常),并且可以很容易地与数据库系统的文本处理工具组装。 XFDF 是 FDF 的 XML 表示。要创建示例 FDF,您需要填写表单,完整填写,然后将数据导出为 FDF。这就是你必须重新创建的。

    【讨论】:

      【解决方案3】:

      我找到了一个在线站点来分析现有表单。它有这样的条目:

      form1[0].#subform[0].Yes[0]
      form1[0].#subform[0].No[0]
      form1[0].#subform[0].Yes[1]
      form1[0].#subform[0].No[1]
      form1[0].#subform[0].Prefix[0]
      form1[0].#subform[0].LastName[0]
      form1[0].#subform[0].MiddleName[0]
      

      有些是复选框,有些是文本,有些是下拉菜单。因此,如果 pdflib 或 fpdf 都是免费的并且可以做我需要的,理想情况下我会简单地使用这个表单信息并将 POST 数据直接写入 PDF。那可能吗?有没有例子可以证明这一点?我有大约 40 个字段可以写出它的价值。

      谢谢!

      【讨论】:

        【解决方案4】:

        好的,我找到了一个将 XFA 转换为 AcroForm 的站点。所以现在我的表单应该以 AcroForm 的形式存在。

        仍然不确定如何使用此表单来启用免费库以即时在服务器端重新创建表单。

        【讨论】:

          猜你喜欢
          • 2011-01-15
          • 2020-11-17
          • 1970-01-01
          • 2012-07-04
          • 1970-01-01
          • 2016-09-22
          • 1970-01-01
          • 2010-11-24
          • 1970-01-01
          相关资源
          最近更新 更多