Введите формат PDF для заполнения формы PDFTK

Существует ли конкретный формат ввода файла для использования pdftk для заполнения полей формы (через PHP).

У меня есть входной PDF-файл, созданный в Acrobat 9.

Я пробовал "pdftk in.pdf output out.pdf" и пробовал комбинации параметров flatten и drop_xfa.

Каждый раз я получаю следующую ошибку: "FilterFlateDecode: неверные данные потока"

Входной текст - это простой текст, а поля формы в PDF также являются текстом.

Я знаю, что могу сохранить PDF как оптимизированный PDF, но есть слишком много вариантов проб и ошибок!

Это вывод -info (я использовал для этого cpdf) в файле PDF, который я хочу использовать:

Encryption: Not encrypted
Permissions: 
Linearized: false
Version: 1.7
Pages: 1
Title: 
Author: 
Subject: 
Keywords: 
Creator: Adobe InDesign CS6 (Macintosh)
Producer: Adobe PDF Library 10.0.1
Created: D:20140219113433Z
Modified: D:20140304104401Z

Пэдди

1 ответ

Решение

Сначала вам нужно создать временный файл.fdf с входными данными, а затем использовать pdftk для работы с шаблоном pdf и.fdf для создания заполненного файла pdf.

function createFDF($file,$info){
$data="%FDF-1.2\n%âãÏÓ\n1 0 obj\n<< \n/FDF << /Fields [ ";
foreach($info as $field => $val){
if(is_array($val)){
$data.='<</T('.$field.')/V[';
foreach($val as $opt)
$data.='('.trim($opt).')';
$data.=']>>';
}else{
$data.='<</T('.$field.')/V('.trim($val).')>>';
}
}
$data.="] \n/F (".$file.") /ID [ <".md5(time()).">\n] >>".
" \n>> \nendobj\ntrailer\n".
"<<\n/Root 1 0 R \n\n>>\n%%EOF\n";
return $data;
}



$fileName = "Template_PDF.pdf";
$fdf_file = "temporary.fdf";
$result_file = "Result.pdf";
$arr['a_variable'] = 'value or a variable';


$fdf_data = createFDF($fileName, $arr);


if($fp=fopen($fdf_file,'w'))
{
    fwrite($fp,$fdf_data,strlen($fdf_data));
}
else
{
    echo 'Unable to create file: '.$fdf_file.'<br>';
}
fclose($fp);
exec("pdftk ".$fileName." fill_form ".$fdf_file." output ".$result_file );

вот и все.

Другие вопросы по тегам