2009-09-07 129 views
20

使用PHP可以將FDF數據與PDF文件合併在一起嗎?或者是沒有選擇,只能使用第三方命令行工具來實現這一目標?使用PHP將FDF數據合併到PDF文件中

如果是這樣的話,有人能指出我的方向嗎?

我目前正在向瀏覽器輸出FDF文件,希望它會將用戶重定向到填充的PDF,但對於某些情況並非如此。即使我正在使用標題('Content-type:application/vnd.fdf'),FDF內容正在輸出到屏幕。

回答

30

爲了將來的參考,它看起來像沒有一個可靠的方式做沒有第三方應用程序。 Pdftk(http://www.accesspdf.com/pdftk/)最終成爲我的解決方案。

我第一次產生的FDF像以前的文件,然後使用下面的PHP代碼

header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="Download.pdf"'); 
passthru("pdftk file.pdf fill_form data.fdf output - "); 
exit; 

它比我想象的要容易得多合併到我的PDF文件。這立即消除了對標題和文件擴展名的破解,以確保所有瀏覽器正確處理FDF,因爲它只是使瀏覽器下載PDF文件。

如果你想在PDF輸出文件不再是可編輯的,使用

passthru("pdftk file.pdf fill_form data.fdf output - flatten"); 

道歉,如果這是基本的東西,只是覺得應該把它們都放在一個地方,讓人們不要去通過我忍受的頭痛。

N.B.如果沒有設置PATH變量,你需要使用的完整路徑PDFTK即

passthru("/usr/local/bin/pdftk file.pdf fill_form data.fdf output - flatten"); 
+0

更多的相關信息我已經做到了現在,由於 – James 2009-09-14 11:09:26

+1

哇,對我幫助很大! – Strae 2010-01-26 13:13:39

+2

應該注意的是'fill_form'也適用於XFDF數據。如果您需要在生成的PDF中包含可編輯和只讀字段的組合,請在生成PDF時爲要填寫的字段設置「只讀」屬性。只讀字段將由PDFTK填充,但不能由最終用戶編輯。 – Kenaniah 2011-04-04 18:04:12

3

還有另一種方式來一天,不使用中繼也不PDFTK只是一個腳本,在2004年,但仍然正常工作:forge_fdf

它可以幫助你建立一個FDF,你可以在你的PDF straithly incoporate,它意思是你

保存在一個php文件,讓我們說generatePdf。PHP

require_once('forge_fdf.php'); 

// leave this blank if we're associating the FDF w/ the PDF via URL 
$pdf_form_url= ""; 


// default data; these two arrays must ultimately list all of the fields 
// you desire to alter, even if you just want to set the 'hidden' flag; 
// 
// 
$fdf_data_names= array(); // none of these in this example 
$fdf_data_strings= array(); // none of these in this example 

$fdf_data_strings['email']=mb_strtolower($row_delivreur['firstname']).'.'.mb_strtolower($row_delivreur['lastname']).'@gmail.com'; 

$fields_hidden= array(); 
$fields_readonly= array(); 

// set this to retry the previous state 
$retry_b= false; 

header('content-type: application/vnd.fdf'); 

echo forge_fdf($pdf_form_url, 
     $fdf_data_strings, 
     $fdf_data_names, 
     $fields_hidden, 
     $fields_readonly); 

製作一個鏈接到Pathtoyourpdf/nameofpdffile.pdf#FDF = generatePdf.php將在瀏覽器中打開PDF文件(或者有一種方法將其保存到磁盤我想我記得)和電子郵件領域將充滿來自MYSQL的數據:mb_strtolower($row_delivreur['firstname']).'.'.mb_strtolower($row_delivreur['lastname']).'@gmail.com'

它可以與複選框,單選按鈕一起使用......它可以在Firefox中打開,它必須在其他瀏覽器中測試。在PDF HACKS

+0

Forge_fdf for PHP也由PDF Labs(Pdftk的創建者)編寫,我相信。 – BMiner 2011-05-13 14:39:47