FPDF-Merge Error:在pdf模板中找不到使用fpdm.php填充表单数据的字段

时间:2012-12-19 01:38:49

标签: php pdf fpdf acrobat pdf-form

我正在使用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错误:找不到字段级联

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

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

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

4 个答案:

答案 0 :(得分:1)

为此你必须压缩你的pdf
然后运行压缩你的fdf你需要安装pdfftk
然后使用以下命令行进程

设置环境并使用pdftk进行压缩
C:\Users\Deepak\Desktop>pdftk template_3.pdf output template3_o.pdf

然后使用

template3_o.pdf 

而不是

template_3.pdf 

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

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

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