2011-03-24 101 views
2

有沒有什麼辦法可以在不使用死FDF函數的情況下在PHP中創建FDF文件?我知道,你可以使用pdftk創建從現有 FDF文件PDF,但我需要創建FDF有一個字段的值設置第一個文件。使用PHP創建PDF,而不使用PHP的FDF功能

或者,有沒有辦法來設置允許用戶下載之前,使用PHP(跳過FDF文件創建)一個PDF一個領域?

對於它的赫克,我嘗試使用fopen在PHP創建FDF文件 - 沒有工作。我也知道在pdftk內有一個generate_fdf操作,但是這不允許我設置具體的值,至少不是我能看到的。

有誰知道答案可能是什麼?我很困難。不幸的是,我無法控制告訴客戶放棄完整的PDF(而是使用網絡表單)。

回答

2

隨着PDFTK你需要兩件完成拼圖。首先,你需要FDF的數據,其次是一個具有適當命名的表單域的原始PDF。 PDFTK將數據合併到PDF中。

要回答這個問題,FDF先看看這個優秀的文章,http://koivi.com/fill-pdf-form-fields/還包括一個方法來幫助生成FDF。

一旦你的FDF與您的數據,你可以使用PDFTK的fill_form功能

你可以把文件通過中繼(編輯)代替ReadFile的($ temp_file),並輸出到通過,而不是標準輸出文件名使用「輸出 - 」參數。避免強制處理文檔也很重要。如果您試圖強制下載文件而不是在瀏覽器中打開它,那麼最終會導致一個不可編輯且無法挽回的混亂。

例如:

header("Content-type:application/pdf"); 
passthru("pdftk ".$original." fill_form ".$fdf." output -"); 
die(); 

這將在使用閱讀器插件的瀏覽器中打開它。然後,您將能夠編輯和打印填充的表單字段,但我仍然沒有想出一種方法來保存具有更改的副本。我目前正在爲其他選項追求Adobe銷售。

正如其他地方所指出,不使用PDFTK的選項「扁平化」。

原始PDF不得包含任何密碼。

+0

謝謝你深思熟慮的答案。我不再需要爲了我自己的目的回答這個問題,但我將你的答案標記爲將來任何人看到這個問題的正確答案。 – Charx 2013-01-22 21:28:23

2

如果我理解正確的話,你只是不希望使用特別的FDF庫?

您是否嘗試過TCPDF?見http://www.tcpdf.org/

如果要使用現有的PDF文件作爲模板,只添加一些值,可以使用延長FPDI延伸TCPDF:http://www.setasign.de/products/pdf-php-solutions/fpdi/

+0

我會使用FPDF來代替。是的,它是較舊的,是的,它沒有包含很多類,但文件大小是〜50KB而不是1MB。如果你問我,就荒謬了。 – JM4 2011-09-20 19:36:08