用PHP填写PDF表单

用PHP填写PDF表单

Filling PDF Forms with PHP

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


这里提到的库和框架都不错,但是如果您只想填写表格并将其展平,我建议您使用命令行工具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文件中看起来像

的部分

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

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


可接受的答案大1,如果fdf文件遇到编码问题,则小提示。如果生成fields.fdf并在运行时

1
file -bi fields.fdf

您得到

1
application/octet-stream; charset=binary

那么您很可能遇到了UTF-16字符集问题。
尝试通过

转换ftf

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

然后,我可以将Better.fdf文件编辑并导入到我的PDF表单中。

希望这可以为某人节省一些Google-ing


为:

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

随时检查我的PdfFormFillerUTF-8。


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

然后使用pdftk将其填充为pdf(请参见上文)


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

1
2
3
4
5
6
7
8
9
 <?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();
?>

,您可能会遇到这样的事情。

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

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


我写了一个Perl库CAM :: PDF,它具有可以解决此问题的命令行界面。几年前,我尝试使用FDF解决方案,但发现它太复杂了,这就是为什么我首先编写CAM :: PDF的原因。我的图书馆使用了一些试探法,用所需的文本替换表格,因此并不完美。但是它在大多数时间都有效,并且快速,免费并且易于使用。


我们在工作中使用PDFLib。付费版本不是很昂贵,并且如果您无法为付费版本掏腰包,则开放源代码版本的使用会更加有限。


类似这样的内容之前已被涵盖。使用Zend Framework PDF库单击以获取相关代码。


推荐阅读