【发布时间】:2023-03-20 19:21:01
【问题描述】:
我正在使用来自 fpdf.org 的“表单填写”脚本来填写我创建的 PDF 表单上的一些字段。这似乎工作正常。
我希望将生成的 PDF 表单展平,以便用户无法编辑表单域。我为此使用PDFTK。但是,当我尝试拼合 PDF 时,我得到一个表单字段为空的 PDF。
任何关于如何使 PDF 扁平化(使用 PHP)的建议将不胜感激。谢谢!
这是我的代码:
<?php
require('fpdm.php');
$fields = array("Name" => "John Doe",
"Address" => "123 White Lane",
"Age" => "30",
"Phone" => "123-1234");
$pdf = new FPDM("templates/Test.pdf");
$pdf->Load($fields, true);
$pdf->Merge();
$pdf->Output("cache/Filled1.pdf","F");
exec("pdftk cache/Filled1.pdf output cache/Filled1Flat.pdf flatten");
?>
下载原Test.pdf文件:Test.pdf
下载 Filled1.pdf 文件(正确显示 pdf 表单,数据可见):Filled1.pdf
下载 Filled1Flat.pdf 文件(显示扁平化的 pdf 表单,没有可见的表单数据):Filled1Flat.pdf
【问题讨论】:
-
请同时提供中间文件 Filled1.pdf。 Test.pdf 包含表单字段的空正常外观流。如果 fpdf 只设置字段的值但不更新它们的外观,并且如果 pdftk 假设现有外观是正确的,则可以解释观察到的行为。在这种情况下,您必须更改表单填充以更新外观或展平以创建外观。不过,我不喜欢 PHP,所以不能说哪个更容易完成以及如何完成。
-
mkl,感谢您的回复。我添加了下载中间 PDF (Filled1.pdf) 和最终 PDF (Filled1Flat.pdf) 的链接。如果我从 PDFTK 命令中删除“flatten”选项,那么 PDF 文件确实会正确显示表单数据,这毫无价值:exec("pdftk cache/Filled1.pdf output cache/FilledProcessed.pdf"); i> 在这里下载:FilledProcessed.pdf
-
很遗憾,直到现在我还没有时间检查您提供的其他文件,现在它们似乎从您提供的链接中消失了。如果您重新激活链接,我会查看这些文件并尝试告诉您哪些命令是罪魁祸首。
标签: php pdf fpdf pdftk pdf-form