FPDF FPDM - 由PDFTK引起的合并错误

时间:2014-10-14 09:56:48

标签: php pdf encoding fpdf pdftk

首先:这是我的第一个问题然后sry如果代码synthax不容易阅读,不要找到一种方法来使它干净。

我正在尝试填写我用Adobe Creator制作的大PDF模板。

FPDM适用于fpdm lib中包含的template.php,但是在通过pdftk后将PDF模板更改为我的模板时会出现此错误。

  

FPDF-Merge错误:无法找到注释对象的当前值(/ v)   288,在解析过程中出现问题(解压缩你的pdf和   重试)或你的pdf已损坏。

我在互联网上找不到任何关于此问题的主题。

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


    define('DRUPAL_ROOT', getcwd());

    include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
    drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
    // #1 shouldn't be necessary
    require_once 'fpdf/src/fpdf.php';
    require_once 'fpdf/examples/form_filling/fpdm.php';

    // To be used after test win
    $sid = '58';
    $node = new stdClass();
    $node->nid = '270'; 
    $temp_submission = webform_menu_submission_load($sid, $node->nid);

    // NOM is the first field id of my Template PDF.
    $fields = array(
        'NOM' => 'My name'
    );

    $pdf = new FPDM('Dossier_de_candidature_2ndaire_2014_adaptev1_fpdf.pdf');
    $pdf->Load($fields, TRUE);
    $pdf->Merge();
    $pdf->Output('formulaire.pdf', 'D');

?>

谢谢!

1 个答案:

答案 0 :(得分:2)

我赢了!

我最终选择忘记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。 (我让你找到,这很简单)