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

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

Существуют ли библиотеки PHP, которые можно использовать для заполнения форм PDF, а затем сохранять (сглаживать) их в PDF файлы?

4b9b3361

Ответ 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

Ответ 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