2008-09-16 199 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格式。

希望這可以節省一些谷歌的人