2009-09-07 126 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