使用 PHP 将值插入到可编辑的 PDF 中,并使其保持可编辑状态

Posted

技术标签:

【中文标题】使用 PHP 将值插入到可编辑的 PDF 中,并使其保持可编辑状态【英文标题】:Insert values into editable PDF with PHP, and keep it editable 【发布时间】:2013-03-06 05:13:21 【问题描述】:

我有一个带有可编辑字段的 PDF。我希望将 html 表单中的值传递到此 PDF 中。我尝试使用 FPDF 并且它可以工作,但是在将值传递给 PDF 后,pdf 中的字段不再可编辑。

另一个缺点是在将值传递给 PDF 时,我们必须为每个字段指定准确的坐标。关于我可以用来保持“PDF EDITABLE”的其他工具的任何想法?

我使用以下代码生成pdf http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/simple-demo/

【问题讨论】:

我见过的大多数 PDF 库都没有这个功能。谷歌搜索揭示了这一点:quickpdflibrary.com/faq/… 谢谢马特。让我看看这个。 【参考方案1】:

我无法在 PHP 中找到我真正喜欢的原生 PDF 填充方法。相反,我使用 PHP 生成 XFDF,然后使用pdftk 将其推送到可填充的 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);

如果您确实想要一个不可编辑的 PDF,请在命令中的单词 dont_ask 之前添加单词 flatten


如果您不喜欢填写 PDF 表单,您也可以生成 HTML 格式的表单,然后使用dompdf 将 HTML 转换为 PDF。

【讨论】:

以上是关于使用 PHP 将值插入到可编辑的 PDF 中,并使其保持可编辑状态的主要内容,如果未能解决你的问题,请参考以下文章

PDF到可编辑文档

当我以 pdf 形式将值插入占位符时,如何为 iText 设置编码?

使用 JQuery 将值插入 mySQL

php使用foreach将值插入数组数组

使用PDF编辑器怎么在PDF文件中插入新页面

使用 Angular 和 ANYWHERE 将元素动态添加到可编辑的 div