1

我正在使用来自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,因为它是专有的。

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

4

4 回答 4

3

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

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

然后使用

template3_o.pdf 

代替

template_3.pdf 
于 2013-12-30T12:42:31.957 回答
1

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

于 2013-05-14T18:50:25.997 回答
1

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

于 2021-04-02T13:23:41.637 回答
-1

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

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