Заполнение PDF-форм с помощью PHP

Существуют ли библиотеки 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 (см. выше)

Для:

  • Простой формат ввода, а затем XFDF
  • Поддержка True UTF-8 (русский)
  • Полный пример использования php

Не стесняйтесь проверить мой 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