2008-09-16 148 views
42

是否有可用于填充PDF表单并将其保存(压平)为PDF文件的PHP库?用PHP填充PDF表格

+3

这个问题的编辑版本是希望有一个很好的候选人重新打开。它已被看过> 36K次,并且有有趣的答案。 – jah 2015-06-14 09:59:13

+0

@jah:这是一个图书馆推荐问题,它本质上是无关紧要的。即使重新开放,它也会以更精确的原因再次关闭。 – BoltClock 2015-06-16 06:09:56

+4

@jah:也许如果你重新提出这个问题:“在PHP中,我怎样才能填充PDF表单,然后将它们保存(压扁)为PDF文件。”似乎有些人无法超越“图书馆”这个词。 – bmb 2016-03-03 22:46:26

回答

45

库和这里提到的框架是好的,但如果你想要做的就是填表和扁平的话,我建议叫PDFTK(PDF工具包)的命令行工具。

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

你可以调用从PHP的命令行,该命令是

pdftkformfile.pdffill_formfieldinfo.fdfoutputoutputfile.pdfflatten

您将需要找到FDF文件的格式以生成i nfo填写字段。这里有一个很好的链接为:

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

[编辑:上面的链接似乎是出佣金。下面是一些详细信息...]

的PDFTK命令可以生成PDF表单文件FDF文件。然后可以使用生成的FDF文件作为示例。表单域,看起来像

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

您还可以检查出php-pdftk,这是专门针对PHP库的FDF文件的一部分。我没有使用它,但评论者阿尔瓦罗(下)推荐它。

1

貌似这已经covered before。使用Zend Framework PDF库点击相关代码。

+0

是的,我看到了这个回应。但是,我想知道是否有一些特定的库用于处理PDF表单,而不仅仅是平面PDF文档。 – mno 2008-09-17 03:36:55

1

我们使用PDFLib工作。付费版本并不是非常昂贵,如果您无法支付付费版本,那么开源版本会更加有限。

2

我已经有很多成功的与使用提交到使用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> 

这个骨骼的例子应该帮助你开始。

1

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

3

对于:

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

随时检查我的PdfFormFillerUTF-8

4

对于接受的答案有一个很大的+1,并且如果遇到fdf文件的编码问题,这里有一点提示。如果您生成fields.fdf并在运行

file -bi fields.fdf 

application/octet-stream; charset=binary 

那么你最有可能碰上一个UTF-16字符集问题。 尝试借助于转换的

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

的FTF当时我能够编辑和导入better.fdf文件到我的PDF格式。

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