Возможно ли объединить данные FDF с файлом PDF, используя только PHP? Или нет никакого варианта, кроме как использовать сторонний инструмент командной строки для этого?
Если это так, кто-то может указать мне в сторону одного?
В настоящее время я выводил файл FDF в браузер, надеясь, что он перенаправит пользователя в заполненный PDF-файл, но для некоторых людей это не так. Содержимое FDF выводится на экран, хотя я использую заголовок ('Content-type: application / vnd.fdf');
В будущем, похоже, нет надежного способа сделать это без стороннего приложения. 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
это поможет вам построить fdf, который вы можете легко форматировать в своем 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 repo – http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-5aabf02717d5b6b12d47edbc5811404998926a1b
тогда
yum install pdftk
вот и все!
http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/concatenate-fake/
Это работает, загрузка классов также связана с веб-сайтом,
Он не требует команды passthru / exec и дополнительных расширений.
Отредактировано, что это не работает с более новыми версиями PDF версии 1.5+, вернувшимися к PDFTK, но в то же время работает со всеми pdf-файлами с помощью команды «exec».