FPDF FPDM - 由于 PDFTK 导致的合并错误

Posted

技术标签:

【中文标题】FPDF FPDM - 由于 PDFTK 导致的合并错误【英文标题】:FPDF FPDM - Merge Error due to PDFTK 【发布时间】:2014-10-14 09:56:48 【问题描述】:

首先:这是我的第一个问题,如果代码合成器不容易阅读,请不要找到使其干净的方法。

我正在尝试填充我使用 Adob​​e Creator 制作的大型 PDF 模板。

FPDM 与包含在 fpdm 库中的 template.php 工作正常,但是当我将 PDF 模板更改为我的模板时,会出现此错误,经过 pdftk。

FPDF 合并错误:找不到注释对象的当前值 (/v) 288,解析过程中出现问题(解压缩您的 pdf 并 重试)或您的 pdf 已损坏。

我在互联网上没有找到任何关于这个问题的主题。

错误来自我的 PDF 模板,原因是他的编码方式。 在我的文本编辑器中打开我的 PDF 后,我看到对象 288(和其他对象)没有 /v 属性,正如错误所暗示的那样。那么我想编码方式不是FPDM等待的方式。 在使用 pdftk 之前,错误是:“PDF 为空”之类的。

定义('DRUPAL_ROOT',getcwd()); include_once DRUPAL_ROOT 。 '/includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // #1 不是必须的 require_once 'fpdf/src/fpdf.php'; require_once 'fpdf/examples/form_filling/fpdm.php'; // 测试胜利后使用 $sid = '58'; $node = new stdClass(); $节点->nid = '270'; $temp_submission = webform_menu_submission_load($sid, $node->nid); // NOM 是我的模板 PDF 的第一个字段 id。 $字段 = 数组( 'NOM' => '我的名字' ); $pdf = new FPDM('Dossier_de_candidature_2ndaire_2014_adaptev1_fpdf.pdf'); $pdf->加载($fields, TRUE); $pdf->合并(); $pdf->输出('formulaire.pdf', 'D'); ?>

谢谢!

【问题讨论】:

EDIT #2:我在 PDFTK 文档中看到 pdftk 不适用于 PDF 1.6 版本。这就是我的情况。我试图找到一种方法来更改我的 pdf 版本或使用 PDFTK 以外的其他东西。总是需要帮助,但如果我的小搜索可以帮助某人,我会很高兴:) 【参考方案1】:

我赢了!

我最终还是选择了忘记FPDF,直接自己做系统,这简直就是我想的FPDF。 别担心,这根本不难。

看看这个网站,了解 fdf 是如何填充 pdf 模板(映射)和.. 做的:)

http://doc.ubuntu-fr.org/pdftk

第 1 步:在 PhP 中创建 FDF 内容

/* A FDF content empy */
$xfdf_head = '<?xml version="1.0" encoding="UTF-8"?><xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve"><fields>';
$xml_data = '';
$xfdf_end = '</fields></xfdf>';

/* Generate all fields with field_key form webform and value form submission */
foreach ($webform['#node']->webform['components'] as $key => $value) 

    if ($webform['#submission']->data[$key]['value'][0])
        $valeur = $webform['#submission']->data[$key]['value'][0];
     else 
        $valeur = '';
    

    $xml_data .= '
        <field name="'.$webform['#node']->webform['components'][$key]['form_key'].'">
            <value>'.$valeur.'</value>
        </field>';



$FDF_content = $xfdf_head.$xml_data.$xfdf_end;

第 2 步:创建一个 FDF 文件并在其中写入您的内容

$FDF_file = fopen('new_fdf.fdf', 'w');
fwrite($FDF_file, $FDF_content);
fclose($FDF_file);

第 3 步:在 Php 中使用 PDFTK 命令(检查网站顶部)[在之前填充这 2 个变量..]

$pdftk_command = '/usr/bin/pdftk '. $pdf_template .' fill_form new_fdf.fdf output '.$new_fillup_pdf;
shell_exec($pdftk_command);

第 4 步:强制下载或在 PHP 中打开新的 PDF。 (我让你找到方法,这很容易)

【讨论】:

以上是关于FPDF FPDM - 由于 PDFTK 导致的合并错误的主要内容,如果未能解决你的问题,请参考以下文章

php 更新版本的FPDM以解决范围问题。

根据发票代码获取发票类型

使用 FPDF 将网页导出为 PDF

如何创建受密码保护的 pdf 文件

利用Unity自带的合图切割功能将合图切割成子图

PDFtk 挂在 MacOS Sierra 上