2011-01-05 41 views
8

我們使用iText自動在多個文檔上填寫表單字段,然後將這些文檔連接成一個生成的PDF。在Acrobat Reader中連接PDF並保留擴展功能

Adob​​e在Acrobat Reader中引入了「擴展功能」選項,以允許Acrobat Reader用戶通過對錶單域的更改保存PDF。

這是Adobe專有的一項功能,iText只能解決這個問題。

我已經能夠在追加模式下使用PdfStamper類執行一個特定文檔的工作。由於PDF包含表單字段,因此我們使用PdfCopyFields類來執行拼接。 PdfCopyFields沒有附加模式。

是否有另一種方法可以使用iText(任何版本)將PDF附加到已有的PDF中?

回答

5

這是可能的,但需要您足夠的知識來修改PdfCopyFields,以便以附加模式保存。

你可以複製的功能,並使用它PdfStamper的頂部(在自己的類或其他方式),子類PdfCopyFields,或直接修改PdfCopyFields。

Big Stumbling Block 所有在PDF中具有相同名稱的字段都具有相同的值。如果您在生成的PDF中有相同表單的兩個副本,那麼您有相同數據的兩個視圖。

即使採用不同的形式,如果碰巧遇到名稱衝突(這裏的「城市」可能是當前地址的一部分,而在那裏可能是他們出生的城市),他們會一起歡樂相同的價值。

如果你有一個全面的系統,所有的命名衝突都是故意的,那真是太好了,那就打破了。如果「名字」總是指同一個人,並且改變它應該改變所有表格中的值,那麼你就是金。如果沒有......這就是爲什麼PdfStamper的扁平化能力如此受歡迎。

替代方法是「在將表格粘貼在一起之前重命名所有字段」以避免此類衝突。

即使有一個綜合系統,我仍然建議掀起一個小工具,它會通過您建議合併的表單並尋找衝突。也許在一些測試數據中列出它們的值。你可能會在「Fly:House,Common」和「Fly:Southwest Airlines」之間找到一些東西。

可能不是那個特殊的例子,但是誰知道? ;)

+0

謝謝馬克。對於字段名稱衝突問題,我只是根據附加文檔的計數向每個字段添加一個後綴。它適合我們。 – 2011-01-08 13:37:08