Заполнение PDF-форм с помощью PHP [закрыто]

StackOverflow https://stackoverflow.com/questions/77873

  •  09-06-2019
  •  | 
  •  

Вопрос

Существуют ли библиотеки 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.Моя библиотека использует несколько эвристик для замены формы нужным текстом, поэтому она не идеальна.Но в большинстве случаев это работает, и это быстро, бесплатно и довольно просто в использовании.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top