Заполнение PDF-форм с помощью PHP [закрыто]
Вопрос
Существуют ли библиотеки PHP, которые можно использовать для заполнения PDF-форм, а затем сохранять (сглаживать) их в PDF-файлы?
Решение
Упомянутые здесь библиотеки и фреймворки хороши, но если все, что вы хотите сделать, это заполнить форму и выровнять ее, я рекомендую инструмент командной строки под названием pdftk (PDF Toolkit).
Видишь https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Вы можете вызвать командную строку из php, и эта команда будет
pdftk
формат файла.pdf fill_form
fieldinfo.fdf 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.Я им не пользовался, но комментатор Альваро (ниже) рекомендует его.
Другие советы
Большой + 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-форму.
Надеюсь, это избавит кого-нибудь от необходимости гуглить
Я добился большого успеха в использовании формы, которая отправляется 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>
Этот пример со скелетом должен помочь вам начать работу.
генерация файла fdf с помощью php:видишь http://www.php.net/manual/en/book.fdf.php
затем заполните его в формате PDF с помощью pdftk (см. Выше).
Для:
- Более простой формат ввода, чем XFDF
- Истинная поддержка UTF-8 (русского языка)
- Полный пример использования php
Не стесняйтесь проверять мой PdfFormFillerUTF-8.
Похоже, это было покрытый до.Просмотрите соответствующий код, используя библиотеку Zend Framework PDF.
Мы используем PDFlib на работе.Платная версия не очень дорогая, и существует более ограниченное издание с открытым исходным кодом, если вы не можете раскошелиться на платную версию.
Я написал библиотеку Perl, CAM::PDF, с интерфейс командной строки это может решить проблему.Я пытался использовать решение FDF много лет назад, но нашел его слишком сложным, поэтому в первую очередь написал CAM:: PDF.Моя библиотека использует несколько эвристик для замены формы нужным текстом, поэтому она не идеальна.Но в большинстве случаев это работает, и это быстро, бесплатно и довольно просто в использовании.