Слияние данных FDF в файл PDF с использованием PHP

Можно ли объединить данные FDF с файлом PDF, используя только PHP? Или нет другого выбора, кроме как использовать сторонний инструмент командной строки для достижения этой цели?

Если это так, может кто-то указать мне в направлении одного?

В настоящее время я вывожу файл FDF в браузер в надежде, что он перенаправит пользователя в заполненный PDF, но для некоторых людей это не так. Содержимое FDF выводится на экран, хотя я использую заголовок ("Content-type: application/vnd.fdf");

4 ответа

Решение

Для дальнейшего использования, похоже, нет надежного способа сделать это без стороннего приложения. Pdftk ( http://www.accesspdf.com/pdftk/) оказался моим решением.

Сначала я сгенерировал файл FDF, как и раньше, а затем слил его в свой файл PDF, используя следующий код PHP

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="Download.pdf"');
passthru("pdftk file.pdf fill_form data.fdf output - ");
exit;

Это было намного проще, чем я думал. Это мгновенно избавляет от необходимости взламывать заголовки и расширения файлов, чтобы гарантировать, что все браузеры обрабатывают FDF должным образом, поскольку это просто заставляет браузер загружать файл PDF.

Если вы хотите, чтобы выходной файл PDF больше не редактировался, используйте

    passthru("pdftk file.pdf fill_form data.fdf output - flatten");

Извиняюсь, если это основной материал, просто подумал, что я все это собрал в одном месте, чтобы люди не переживали головную боль, которую я пережил.

NB Если ваша переменная PATH не установлена, вам нужно будет использовать полный путь к pdftk, т.е.

    passthru("/usr/local/bin/pdftk file.pdf fill_form data.fdf output - flatten");

Есть еще один способ, который заключается в том, чтобы не использовать passthru и pdftk, а просто скрипт, созданный в 2004 году, но все еще работающий хорошо: forge_fdf

это поможет вам создать PDF-файл, который вы можете включить в ваш PDF-файл, это означает, что вы

Сохраните это в php-файле, скажем, generatePdf.php

require_once('forge_fdf.php');  

// leave this blank if we're associating the FDF w/ the PDF via URL
$pdf_form_url= "";


// default data; these two arrays must ultimately list all of the fields
// you desire to alter, even if you just want to set the 'hidden' flag;
//
//
$fdf_data_names= array(); // none of these in this example
$fdf_data_strings= array(); // none of these in this example

$fdf_data_strings['email']=mb_strtolower($row_delivreur['firstname']).'.'.mb_strtolower($row_delivreur['lastname']).'@gmail.com';

$fields_hidden= array();
$fields_readonly= array();

// set this to retry the previous state
$retry_b= false;

header( 'content-type: application/vnd.fdf' );

echo forge_fdf( $pdf_form_url,
        $fdf_data_strings, 
        $fdf_data_names,
        $fields_hidden,
        $fields_readonly );

Создание ссылки на Pathtoyourpdf/nameofpdffile.pdF#FDF=generatePdf.php откроет ваш PDF-файл в браузере (в качестве альтернативы есть способ сохранить его на диск, я думаю, что я помню), и поле электронной почты будет заполнено данными из MYSQL: mb_strtolower($row_delivreur['firstname']).'.'.mb_strtolower($row_delivreur['lastname']).'@gmail.com'

Он работает с флажками, переключателем,... Он хорошо открывается в Firefox, он должен быть протестирован с другими браузерами.

Больше информации о PDF HACKS

Самый простой способ, который я нашел, - установить pdftk на centos:

Установите репозиторий rpmforge - http://wiki.centos.org/AdditionalResources/Repositories/RPMForge

затем

ням установить pdftk

и это все!

http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/concatenate-fake/

Это работает, загрузка классов также связана с веб-сайтом,

Для этого не требуется команда passthru/exec и никаких дополнительных расширений.

Отредактированный, чтобы сказать, что это не работает с более новыми версиями pdf 1.5+, возвращенными к PDFTK, неудобно, но работает со всеми pdfs, используя команду 'exec'.

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