Подтвердить что ты не робот

Объединить данные FDF в файл PDF с помощью PHP

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

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

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

4b9b3361

Ответ 1

В будущем, похоже, нет надежного способа сделать это без стороннего приложения. 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");

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

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

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

Ответ 2

Есть еще один способ, чтобы не использовать passthru или pdftk, а только script, сделанный в 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

Ответ 4

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

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

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

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