Вопрос

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

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

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

Это было полезно?

Решение

Для справки: похоже, что нет надежного способа сделать это без стороннего приложения.PDFK (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");

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

Н.Б.Если ваша переменная 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'

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

Дополнительная информация о PDF-хаки

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

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

затем

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

вот и все!

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

Это работает, ссылки на загрузку классов также есть на веб-сайте,

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

Отредактировано, что это не работает с более новыми версиями PDF 1.5+, возвращается к PDFTK, неудобно, но работает со всеми PDF-файлами с помощью команды «exec».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top