2014-03-04 39 views
1

是否有使用PDFTK填写表单域(通过PHP)的文件中的特定输入格式。输入PDF格式的补

输入PDF我有一个的Acrobat 9创建的窗体。

我已经试过“PDFTK in.pdf输出out.pdf”,并试图的扁平化和drop_xfa选项组合。

每次我得到以下错误: “FilterFlateDecode:无效流数据”

输入文本是纯文本,并在PDF表单字段也是文本。

我知道我可以将PDF保存为PDF优化,但有太多可能的选项是想尝试和错误!

这是-info输出(I用于此CPDF)的PDF文件我想用:

Encryption: Not encrypted 
Permissions: 
Linearized: false 
Version: 1.7 
Pages: 1 
Title: 
Author: 
Subject: 
Keywords: 
Creator: Adobe InDesign CS6 (Macintosh) 
Producer: Adobe PDF Library 10.0.1 
Created: D:20140219113433Z 
Modified: D:20140304104401Z 

水稻

回答

1

首先,你需要创建输入数据临时.fdf文件然后使用pdftk来测量模板pdf和.fdf以创建填充的pdf。

function createFDF($file,$info){ 
$data="%FDF-1.2\n%âãÏÓ\n1 0 obj\n<< \n/FDF << /Fields [ "; 
foreach($info as $field => $val){ 
if(is_array($val)){ 
$data.='<</T('.$field.')/V['; 
foreach($val as $opt) 
$data.='('.trim($opt).')'; 
$data.=']>>'; 
}else{ 
$data.='<</T('.$field.')/V('.trim($val).')>>'; 
} 
} 
$data.="] \n/F (".$file.") /ID [ <".md5(time()).">\n] >>". 
" \n>> \nendobj\ntrailer\n". 
"<<\n/Root 1 0 R \n\n>>\n%%EOF\n"; 
return $data; 
} 



$fileName = "Template_PDF.pdf"; 
$fdf_file = "temporary.fdf"; 
$result_file = "Result.pdf"; 
$arr['a_variable'] = 'value or a variable'; 


$fdf_data = createFDF($fileName, $arr); 


if($fp=fopen($fdf_file,'w')) 
{ 
    fwrite($fp,$fdf_data,strlen($fdf_data)); 
} 
else 
{ 
    echo 'Unable to create file: '.$fdf_file.'<br>'; 
} 
fclose($fp); 
exec("pdftk ".$fileName." fill_form ".$fdf_file." output ".$result_file); 

多数民众赞成它。

+0

谢谢!这工作完美! – user1517428

+0

很高兴帮助... –