48

是否有 PHP 库可用于填写 PDF 表单,然后将它们保存(展平)为 PDF 文件?

4

8 回答 8

48

这里提到的库和框架都不错,但如果你只想填写一个表格并将其展平,我推荐名为 pdftk (PDF Toolkit) 的命令行工具。

https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

可以从php调用命令行,命令为

pdftk formfile.pdf fill_form fieldinfo.fdf output outputfile.pdf flatten

您需要找到 FDF 文件的格式,以生成填写字段的信息。这是一个很好的链接:

http://www.tgreer.com/fdfServe.html

[编辑:上面的链接似乎失效了。这里有更多信息...]

pdftk 命令可以从 PDF 格式文件生成 FDF 文件。然后,您可以使用生成的 FDF 文件作为示例。表单域是 FDF 文件的一部分,看起来像

...
<< /T(f1-1) /V(text of field) >>
<< /T(f1-2) /V(text of another field) >>
...

您还可以查看php-pdftk,这是一个特定于 PHP 的库。我没有使用它,但评论者 Álvaro(下)推荐它。

于 2008-09-16T23:21:41.260 回答
5

对已接受的答案大加 1,如果您遇到 fdf 文件的编码问题,还有一点提示。如果您生成 fields.fdf 并在运行时

file -bi fields.fdf

你得到

application/octet-stream; charset=binary

那么您很可能遇到了 UTF-16 字符集问题。尝试通过以下方式转换 ftf

cat fields.fdf | sed -e's/\x00//g' | sed -e's/\xFE\xFF//g' > better.fdf

然后我可以编辑 better.fdf 文件并将其导入我的 PDF 表单。

希望这可以为某人节省一些谷歌

于 2012-10-07T19:23:46.720 回答
3

我在使用提交给使用 fpdf 并将表单字段作为获取变量传递的 php 脚本的表单方面取得了很大的成功(可能不是一个很好的最佳实践,但它确实有效)。

 <?php
require('fpdf.php');
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetY(30);
$pdf->SetX(100);
$pdf->MultiCell(10,4,$_POST['content'],0,'J');
$pdf->Output();
?>

你可以有这样的东西。

  <form action="fooPDF.php" method="post">
     <p>PDF CONTENT: <textarea name="content" ></textarea></p>
     <p><input type="submit" /></p>
    </form>

这个骨架示例应该可以帮助您入门。

于 2008-09-18T00:49:54.737 回答
3

用 php 生成 fdf 文件:见http://www.php.net/manual/en/book.fdf.php

然后使用 pdftk 将其填充到 pdf 中(见上文)

于 2009-07-03T09:30:07.960 回答
3

为了:

  • 比 XFDF 更简单的输入格式
  • 真正的 UTF-8(俄语)支持
  • 完整的php使用示例

随意检查我的PdfFormFillerUTF-8

于 2012-05-20T14:00:05.230 回答
1

看起来这已经被覆盖了。点击查看使用 Zend Framework PDF 库的相关代码。

于 2008-09-16T22:28:20.857 回答
1

我们在工作中使用PDFLib。付费版不是很贵,而且有一个更有限的开源版,如果你买不起付费版的话。

于 2008-09-16T22:29:58.670 回答
1

我编写了一个 Perl 库CAM::PDF,它带有一个可以解决这个问题的命令行界面。几年前我尝试使用 FDF 解决方案,但发现它太复杂了,这就是我首先编写 CAM::PDF 的原因。我的库使用一些启发式方法将表单替换为所需的文本,因此它并不完美。但它在大多数情况下都有效,而且快速、免费且使用起来非常简单。

于 2008-09-22T00:55:08.987 回答