【问题标题】:FPDF-Merge Error: field not found in pdf template using fpdm.php to fill form dataFPDF-合并错误:在使用 fpdm.php 填写表单数据的 pdf 模板中找不到字段
【发布时间】:2012-12-06 07:56:18
【问题描述】:

我正在使用来自http://www.fpdf.org/en/script/script93.php 的 FPDF 脚本将 html 表单数据填充到模板中的 pdf 字段中。这个:

require('fpdm/fpdm.php');

$fields = array(
    'name'  => $_POST['_fid_6'],
    'address'  => $_POST['_fid_7'],
    'city'  => $_POST['_fid_8'],
);

$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('qaf.pdf', 'F'); 

当我使用 zip 中提供的示例 template.pdf 时工作正常。但是当我使用自己的 pdf 模板(template3.pdf)时,这个:

require('fpdm/fpdm.php');

$fields = array(
    'cascade'  => $_POST['_fid_6'],
    'structuretype'  => $_POST['_fid_7'],
    'marketmanager'  => $_POST['_fid_8'],
);

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

我收到错误FPDF-Merge Error: field cascade not found

我正在使用 Acrobat XI Pro。我已经三次检查了我的 pdf 模板和 html 表单中的字段名称。我优化了 pdf 以消除压缩和快速 Web 视图,并使其与 Acrobat 5.0 及更高版本兼容。我的模板是 7 页,但我只尝试了 1 页,结果相同。我已经尝试丢弃其他数据和对象,但仍然遇到同样的错误。

我的 pdf 模板中必须有与示例中的 template.pdf 不同的内容,并且导致错误。但我不知道它可能是什么。我不能在此处包含我的实际模板 pdf,因为它是专有的。

关于什么可能导致错误的任何想法?谢谢!

【问题讨论】:

  • 终于启动并运行了pdftk,并且pdftk template3.pdf输出template4.pdf修复了问题。
  • 大声笑,不是一个真正的解决方案。但尖峰。

标签: php pdf fpdf acrobat pdf-form


【解决方案1】:

当我在 pdf 中有多个具有相同名称的字段时出现此错误。尽管它们在 Adob​​e Reader 中显示为 BuyerEmail,但在字段列表的右侧,它们被引用为 BuyerEmail#0、BuyerEmail#1 等,但即使添加 #0、#1,我也无法在 FPDF 中引用它们,等。解决方案是重命名文档中的字段,然后再次通过 pdftk 运行它。然后它确实起作用了。

【讨论】:

    【解决方案2】:

    为了使您的 pdf 可以用于此代码,您的 pdf 必须具有您在 $fields 数组中指定的字段。所以要做到这一点,我有一个简单的解决方案。

    1. 打开 LibreOffice Writer 并使用表单控件创建一个表单。
    2. 双击该字段(将打开一个包含所有属性的窗口)并为该字段命名。
    3. 使用此名称作为 $field 数组中的键来设置值并在 pdf 文档中显示该值。
    4. 设计完表单并命名所有表单控件后。
    5. 使用 LibreOffice 的导出为 pdf 功能,并将此导出的 pdf 用于您的代码以查看可编辑的 pdf。

    【讨论】:

      【解决方案3】:

      为此,您必须压缩您的 pdf
      然后运行压缩你的 fdf 你需要安装 pdfftk
      然后使用以下命令行过程设置环境并使用pdftk进行压缩

      C:\Users\Deepak\Desktop>pdftk template_3.pdf output template3_o.pdf
      

      然后使用

      template3_o.pdf 
      

      而不是

      template_3.pdf 
      

      【讨论】:

      • 大家好,填写表格后如何锁定输入字段?
      【解决方案4】:

      您应该使用 PDFtk (http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/) 将您的模板转换为与脚本兼容的版本!

      【讨论】:

        猜你喜欢
        • 2023-04-02
        • 2016-05-22
        • 1970-01-01
        • 1970-01-01
        • 2011-12-15
        • 1970-01-01
        • 1970-01-01
        • 2020-03-15
        • 1970-01-01
        相关资源
        最近更新 更多