使用PHP填写PDF表单

时间:2008-09-16 22:19:09

标签: php pdf

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

8 个答案:

答案 0 :(得分:47)

这里提到的库和框架都很好,但是如果您只想填写表格并将其展平,我推荐使用名为pdftk(PDF Toolkit)的命令行工具。

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

您可以从php调用命令行,命令是

pdftk formfile.pdf fill_form fieldinfo.fdf output outputfile.pdf {{ 1}}

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

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

[编辑:以上链接似乎无法使用。这是一些更多的信息.​​..]

pdftk命令可以从PDF表单文件生成FDF文件。然后,您可以使用生成的FDF文件作为样本。表单字段是FDF文件的一部分,看起来像

flatten

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

答案 1 :(得分: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表单。

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

答案 2 :(得分:3)

使用提交到使用fpdf的php脚本的表单并将表单字段作为get变量传递(可能不是一个很好的最佳实践,但它可以工作),我已经取得了很大的成功。

 <?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>

这个骨架的例子应该有助于你开始。

答案 3 :(得分:3)

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

然后用pdftk填写pdf(见上文)

答案 4 :(得分:3)

有关:

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

随时查看我的PdfFormFillerUTF-8

答案 5 :(得分:1)

看起来这是covered before。使用Zend Framework PDF库点击查看相关代码。

答案 6 :(得分:1)

我们在工作中使用PDFLib。付费版本并不是非常昂贵,如果您无法支付付费版本,那么开源版本就会受到限制。

答案 7 :(得分:1)

我写了一个Perl库CAM::PDF,其中command-line interface可以解决这个问题。我多年前尝试过使用FDF解决方案,但发现它太复杂了,这就是我首先编写CAM :: PDF的原因。我的库使用一些启发式方法将表单替换为所需的文本,因此它并不完美。但它大部分时间都有效,而且使用起来快速,免费且非常简单。