首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP将值插入可编辑PDF中,并保持其可编辑性

用PHP将值插入可编辑PDF中,并保持其可编辑性
EN

Stack Overflow用户
提问于 2013-03-06 05:13:21
回答 1查看 5.5K关注 0票数 9

我有一个可编辑字段的PDF。我希望将HTML表单中的值传递到此PDF中。我试过使用FPDF,但是在将值传递给PDF之后,pdf中的字段不再可编辑。

另一个缺点是,当将值传递给PDF时,我们必须为每个字段指定精确的坐标。对其他工具有什么想法吗?我可以用它来保存"PDF可编辑“吗?

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

EN

回答 1

Stack Overflow用户

发布于 2013-03-12 20:06:57

我无法在PHP中找到自己真正喜欢的PDF填充方法。相反,我使用PHP生成XFDF,然后使用pdftk将其推入可填充的PDF中。(请注意,此代码要求您的PDF字段命名。)

下面是一个从关联数组生成XFDF的示例函数:

代码语言:javascript
复制
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写入一个临时文件。

代码语言:javascript
复制
$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之前添加单词dont_ask

如果您不附属于填充PDF表单,您也可以用HTML生成表单,然后使用dompdf将其从HTML转换为PDF。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15239462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档