Существуют ли библиотеки PHP, которые могут использоваться для заполнения форм PDF, а затем сохранять (сглаживать) их в PDF-файлы?
Библиотеки и фреймворки, упомянутые здесь, хороши, но если все, что вы хотите сделать, это заполнить форму и сгладить ее, я рекомендую инструмент командной строки pdftk (PDF Toolkit).
См. https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Вы можете вызвать командную строку из php, и команда
pdftk
formfile.pdf fill_form
fieldinfo.fdf output
файл output.pdf flatten
Вам нужно будет найти формат файла FDF, чтобы сгенерировать информацию для заполнения полей. Вот хорошая ссылка для этого:
http://www.tgreer.com/fdfServe.html
[Изменить: Вышеуказанная ссылка, похоже, не работает. Вот еще информация …]
Команда pdftk может генерировать FDF-файл из файла формы PDF. Затем вы можете использовать сгенерированный файл FDF в качестве образца. Поля формы – это часть файла FDF, которая выглядит как
... << /T(f1-1) /V(text of field) >> << /T(f1-2) /V(text of another field) >> ...
Вы также можете проверить php-pdftk , который является библиотекой, специфичной для PHP. Я не использовал его, но комментатор Álvaro (ниже) рекомендует его.
Большой +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
генерация файла fdf с php: см. http://www.php.net/manual/en/book.fdf.php
затем заполните его в pdf с помощью pdftk (см. выше)
Для:
Не стесняйтесь проверить мой PdfFormFillerUTF-8 .
У меня был большой успех с использованием формы, которая отправляется на php-скрипт, который использует 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>
Этот скелетный пример должен помочь вам начать.
Похоже, что это было рассмотрено раньше . Нажмите на соответствующий код, используя библиотеку Zend Framework PDF.
Мы используем PDFLib на работе. Платная версия не очень дорогая, и есть более ограниченное издание с открытым исходным кодом, если вы не можете использовать ее для платной версии.
Я написал библиотеку Perl, CAM :: PDF , с интерфейсом командной строки, который может решить эту проблему. Я пытался использовать решение FDF несколько лет назад, но нашел его слишком сложным, поэтому я написал CAM :: PDF в первую очередь. В моей библиотеке используется несколько эвристик, чтобы заменить форму нужным текстом, поэтому она не идеальна. Но он работает большую часть времени, и он быстрый, бесплатный и довольно простой в использовании.
Попробуйте использовать HTMLDOC , имеется бесплатная версия с открытым исходным кодом
Существует более подробная информация о том, как создать pdf-файл с помощью HTMLDOC с PHP:
https://www.msweet.org/documentation/project1/HTMLDOC.html#6_3_3