我有一个带有可编辑字段的 PDF。我希望将 HTML 表单中的值传递到此 PDF 中。我尝试过使用 FPDF 并且它有效,但是将值传递到 PDF 后,pdf 中的字段不再可编辑。
另一个缺点是,在将值传递到 PDF 时,我们必须为每个字段指定精确的坐标。关于我可以用来保持“PDF 可编辑”的其他工具有什么想法吗?
我使用以下代码生成pdfhttp://www.setasign.de/products/pdf-php-solutions/fpdi/demos/simple-demo/ http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/simple-demo/
我无法找到我真正喜欢的 PHP 原生 PDF 填充方法。相反,我使用 PHP 生成 XFDF,然后使用pdftk http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/将其推入可填写的 PDF 中。 (请注意,此代码需要命名 PDF 的字段。)
以下是从关联数组生成 XFDF 的示例函数:
function forge_xfdf($file,$info,$enc='UTF-8'){
$data='<?xml version="1.0" encoding="'.$enc.'"?>'."\n".
'<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">'."\n".
'<fields>'."\n";
foreach($info as $field => $val){
$data.='<field name="'.$field.'">'."\n";
if(is_array($val)){
$data.='<</T('.$field.')/V[';
foreach($val as $opt)
$data.='<value>'.$opt.'</value>'."\n";
}else{
$data.='<value>'.$val.'</value>'."\n";
}
$data.='</field>'."\n";
}
$data.='</fields>'."\n".
'<ids original="'.md5($file).'" modified="'.time().'" />'."\n".
'<f href="'.$file.'" />'."\n".
'</xfdf>'."\n";
return $data;
}
然后,我将该 XFDF 写入临时文件。
$empty_form = '/path/to/fillable/pdf/form.pdf'
$fdf_filename = tempnam(PDF_TEMP_DIR, 'fdf');
$output_filename = tempnam(PDF_TEMP_DIR, 'pdf');
$fdf_data = forge_xfdf($empty_form, $data, 'UTF-8');
if($fdf_fp = fopen($fdf_fn, 'wb')){
fwrite($fdf_fp, $fdf_data);
fclose($fdf_fp);
$command = '/usr/local/bin/pdftk "'.$empty_form.'" fill_form "'.$fdf_filename.'" output "'.$output_file.'" dont_ask';
passthru($command);
// SEND THE FILE TO THE BROWSER
unlink($output_file);
unlink($fdf_filename);
}
If you do想要不可编辑的 PDF,请添加单词flatten
在命令中的单词之前dont_ask
.
如果您不喜欢填写 PDF 表单,您也可以生成 HTML 表单,然后使用dompdf http://pxd.me/dompdf/www/从 HTML 转换为 PDF。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)