Существуют ли библиотеки PHP, которые можно использовать для заполнения форм PDF, а затем сохранять (сглаживать) их в PDF файлы?
Заполнение PDF-форм с помощью PHP
Ответ 1
Библиотеки и фреймворки, упомянутые здесь, хороши, но если все, что вы хотите сделать, это заполнить форму и сгладить ее, я рекомендую инструмент командной строки pdftk (PDF Toolkit).
См. https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Вы можете вызвать командную строку из php, а команда
pdftk
formfile.pdf fill_form
fieldinfo.fdf output
outputfile.pdf flatten
Вам нужно будет найти формат файла FDF, чтобы сгенерировать информацию для заполнения полей. Здесь хорошая ссылка для этого:
http://www.tgreer.com/fdfServe.html
[Edit: ссылка выше, похоже, не работает. Вот еще информация...]
Команда pdftk может генерировать FDF файл из файла формы PDF. Затем вы можете использовать сгенерированный файл FDF в качестве образца. Поля формы - это часть файла FDF, которая выглядит как
...
<< /T(f1-1) /V(text of field) >>
<< /T(f1-2) /V(text of another field) >>
...
Вы также можете проверить php-pdftk, который является библиотекой, специфичной для PHP. Я не использовал его, но комментатор Álvaro (ниже) рекомендует его.
Ответ 2
Большой +1 к принятому ответу и небольшой совет, если вы столкнетесь с проблемами кодирования с файлом fdf. Если вы создаете поля .fdf и при запуске
file -bi fields.fdf
вы получаете
application/octet-stream; charset=binary
то вы, скорее всего, столкнулись с проблемой набора символов UTF-16. Попробуйте преобразовать ftf с помощью
cat fields.fdf | sed -e's/\x00//g' | sed -e's/\xFE\xFF//g' > better.fdf
Затем я смог редактировать и импортировать файл better.fdf в мою PDF-форму.
Надеюсь, это спасет кого-то Google-ing
Ответ 3
Генерация файла fdf с php: см. http://www.php.net/manual/en/book.fdf.php
затем заполните его в pdf с помощью pdftk (см. выше)
Ответ 4
Для:
- Простой формат ввода, а затем XFDF
- Поддержка True UTF-8 (русский)
- Полный пример использования php
Не забудьте проверить PdfFormFillerUTF-8.
Ответ 5
У меня был большой успех при использовании формы, которая отправляется на php script, который использует fpdf и передает в поля формы как переменные get (возможно, это не лучшая практика, но она работает).
<?php
require('fpdf.php');
$pdf=new PDF();
$pdf->AddPage();
$pdf->SetY(30);
$pdf->SetX(100);
$pdf->MultiCell(10,4,$_POST['content'],0,'J');
$pdf->Output();
?>
и у вас может быть что-то вроде этого.
<form action="fooPDF.php" method="post">
<p>PDF CONTENT: <textarea name="content" ></textarea></p>
<p><input type="submit" /></p>
</form>
Этот скелетный пример должен помочь вам начать.
Ответ 6
Похоже, что это было до. Нажмите на соответствующий код, используя библиотеку Zend Framework PDF.
Ответ 7
Мы используем PDFLib на работе. Платная версия не очень дорогая, и существует более ограниченное издание с открытым исходным кодом, если вы не можете использовать оболочку для платной версии.
Ответ 8
Я написал Perl-библиотеку, CAM:: PDF, с интерфейс командной строки, который может решить эту проблему. Я пытался использовать решение FDF несколько лет назад, но нашел его слишком сложным, поэтому я написал CAM:: PDF в первую очередь. Моя библиотека использует несколько эвристик, чтобы заменить форму желаемым текстом, поэтому она не идеальна. Но он работает большую часть времени, и он быстрый, бесплатный и довольно простой в использовании.
Ответ 9
Попробуйте использовать HTMLDOC, доступна бесплатная версия с открытым исходным кодом
Более подробная информация о том, как создать pdf с помощью HTMLDOC с PHP:
https://www.msweet.org/documentation/project1/HTMLDOC.html#6_3_3