PHP PDF библиотека шаблонов с выводом PDF?



есть ли библиотека PHP PDF, которая может заменить заполнители в существующем документе PDF, ODT или DOCX и создать PDF-файл в качестве конечного результата, не завинчивая макет?



требования:




  • Не нуждается в сторонней веб-службе


  • возможность запуска на общем веб-хостинге была бы идеальной (никаких двоичных установок / пакетов не требуется)



имейте в виду, a библиотека, которая может загружать существующий PDF-файл и вставлять текст программно в определенной позиции является не хватает для моего случая использования.



насколько показывают мои исследования, нет библиотеки, которая может это сделать:




  • TCPDF может создавать документы только с нуля


  • FPDI может читать существующие шаблоны PDF, но может только добавлять содержимое программно (без переменной шаблона замена)


  • существуют различные библиотеки шаблонов DOCX / ODT, но они не выводят PDF



PHPDOCx утверждает, что может делать именно то, что мне нужно - но они не предлагают пробную версию, и я не собираюсь покупать кошку в сумке, особенно когда кажется, что есть никакой другой продукт в интернете, что это. Мне трудно поверить, что они могут сделать это без проблем - если у вас есть успешно сделать это с помощью продукта, пожалуйста, напишите здесь.



Я что-то упускаю из виду?



есть ли способ сделать это с помощью PDF-форм? Я создаю исходные документы в OpenOffice 3.



Я могу использовать стандартные команды Linux (pdftk доступно, например, попробовать это прямо сейчас.)




обновление:*Argh!* меня вызвали из офиса, и щедрость истекла в между тем. Начало новой щедрости: насколько показывает мое тестирование, ни одно решение пока не работает для меня идеально.



обновление II: Я буду искать подход pdftk в ближайшее время, но я также начинаю еще один баунти для еще одного раунда сбора дополнительных входных данных. Этот вопрос теперь видел 1300 rep points в bounties, должен быть какой-то рекорд :)


695   15  

15 ответов:

Пекка,

Я заглянул в это ранее, я думаю, что вы можете использовать pdftk (утилита командной строки), чтобы заполнить форму PDF с помощью файлов данных FDF/XFDF, которые вы можете легко генерировать из PHP. Это был лучший вариант, который я видел до сих пор, хотя вполне может быть родная библиотека.

pdftk довольно полезно в целом, стоит взглянуть.

обновление: посмотреть здесь: http://php.net/manual/en/book.fdf.php

Это не очень практично, но для полноты: если у вас уже есть шаблон ODT, то вы вполне можете сохранить его в качестве шаблона. Изменение содержимого OpenDocument.xml и замена заполнителей в нем довольно проста. Если да, то вы могли бы использовать unoconv или pyodconverter для преобразования ODT в окончательный PDF.

unoconv -f pdf -o final.pdf template.odt

очень очевидно, что для этого требуется полная настройка OpenOffice (UNO и Writer) на веб-сервере. И явно не каждый webhosterбыл будет идти с этим! хаха. Даже если это просто на любой установке Debian или Fedora. Скорость исполнения, вероятно, тоже не будет звездной. Но тогда это может быть самый чистый подход, поскольку OOo управляет обоими форматами намного лучше, чем любой класс PHP.

не делают свободный требование, поэтому я предлагаю LiveDocX. У них есть бесплатный вариант, но он не отвечает не требование третьей стороны, что означает, что вам придется лицензировать его на сервере).

существует также пакет ZF для это:

вы рассматривали возможность использования чего-то вроде xsl:форматирование объектов (XSL:FO)? В основном это XML-документы, которые обрабатываются и превращаются в PDF-файлы. Выполнение string - или лучше, DOM-замены внутри этого должно быть довольно простым. Он поддерживает встраивание изображений, ссылок, аннотаций и т. д.

Это не PHP, но для него есть несколько PHP-оболочек, а также способы их использования через exec и т. д. Не идеально, но он полностью заботится о части шаблона. Для некоторых больше информация: http://techportal.inviqa.com/2009/12/16/transforming-xml-with-php-and-xsl/

есть реализация, доступная как проект Apache -http://xmlgraphics.apache.org/fop/

Это не будет соответствовать вашему мандату" нет двоичного", но PDFlib имеет хорошую систему шаблонов с использованием "блоков", которые являются специфичными для PDFlib метаданными, которые вы можете" нарисовать " в PDF с помощью плагина Acrobat, а затем программно заполнить во время выполнения одним вызовом функции на блок. Блоки могут быть текстовыми (с псевдо-html для простого форматирования текста шрифта face / size / color), изображениями (большинство всего, что может отображаться в PDF) и самими PDF-файлами, поэтому вы можете вставлять все другие документы или фрагменты документов в блоке.

Он может сделать это из уже существующего PDF (загрузить его, вставить содержимое/заполнить блок/и т. д.., вывод), или построить новый PDF с нуля (серьезно больно делать программно, но возможно).

Я успешно использовал блоки для создания простой системы шаблонов для клиента, где они могли бы рисовать блоки в документ с небольшими битами встроенных метаданных, которые затем были проанализированы на стороне сервера для создания формы запрос данных для вставки в эти блоки во время создания документа.

fpdf и есть еще одно расширение поверх него, которое я не могу вспомнить, что позволяет импортировать шаблоны

лучше всего было бы создать весь документ на лету, с шаблоном, определенным программно с помощью fpdf или что-то подобное. Таким образом, ваш текст не будет обрезан абзацами или чем-то подобным, и вы можете легко позиционировать изображения/другие элементы по мере необходимости.

PDFlib-это хорошо, и ваш общий хост может уже иметь его. Я был в состоянии сделать такие вещи, как это http://www.housejockey.com/flyers/12/80/MyListing.pdf с PDFlib довольно легко, но основной метод-это выпадающий текст абзаца...то, что ты сказал, было нехорошо.

Я также работал с abcPDF для ASP / ASP.NET и обнаружил, что он довольно хорош для того, чтобы совать внутрь PDF-файлов, но, опять же, не предназначен для копания внутри существующего текста области.

работа с надежными шаблонами и заполнителями-это скачок сложности выше выпадающего контента. Переплавка существующего текста в PDF, как правило, не представляется возможным. Для этого требуется дополнительная структура документа, для чего предназначены дорогостоящие программные пакеты с переменными данными, такие как XMPie и Creo...

PHPDOCX начинает звучать очень хорошо! Удача.

поздно, но вы можете использовать конструктор шаблонов с открытым исходным кодом https://github.com/applicius/dhek/releases , чтобы определить pkaceholders/территории за любой существующий PDF-файл, затем загрузить его в PHP (как это формат JSON) и пишите соответственно на оригинальный PDF с помощью fpdf lib, чтобы произвести заказ PDF с динамическими данными написано.

хотя не совсем то, что вы спросили, Вы можете рассмотреть, чтобы сделать это в два этапа: используя некоторые PHP templating sytem ( smarty,dwoo) для создания html-страницы, а затем с помощью таких инструментов, как Html2Pdf конвертировать его в pdf. Я использую его, и результаты хорошие (никаких проблем с Разметка страницы и т. д.)

конечно, это зависит от ваших входных документов (вы можете использовать html вместо PDF/ ODT в качестве источника ) и сложности их компоновки.

Ок, я пытаюсь помочь вам решить проблему.

сначала ответ на пару ваших вопросов.

Q-я что-то упускаю из виду?

А - Нет. Существует библиотека PHP PDF, которая может заменить переменные-заполнители в существующем PDF и создать PDF-файл в качестве конечного результата, не завинчивая макет

Q - есть ли способ сделать это с помощью PDF-форм?

А - Да. абсолютно трик, чтобы сделать это с помощью PDF формы

для обоих ответов вы можете использовать Justin Koivisto fill pdf form field php library. Для получения более подробной информации вы, пожалуйста, перейдите к http://koivi.com/fill-pdf-form-fields/tutorial.php. Посмотрите там дополнительную информацию.

заслуга Джастина Койвисто за его работу

P. S

для обхода для отображения таблицы, как выход из pdf-формы пожалуйста, подумайте, чтобы взять некоторые чтения на Oracle Business Intelligence Publisher Руководство пользователя-создание шаблона PDF

Я смог заменить значения заполнителя в a .docx через библиотеку на github под названием phpdocx (https://github.com/djpate/phpdocx) (не тот, на который ссылаются в другом месте)

затем я успешно поместил портативную версию libreoffice на веб-сервер моего хоста, который я вызываю с помощью PHP для преобразования командной строки .docx и др. в pdf. на ходу. У меня нет прав администратора на веб-сервере моего хоста. Вот мой блог о том, что я сделал:

http://geekswithblogs.net/robertphyatt/archive/2011/11/19/converting-.docx-to-pdf-or-.doc-to-pdf-or-.doc.aspx

Это частично отвечает на ваш вопрос. Я надеюсь, что это полезно.

Я добавлю этот новый ответ, так как расширение FDF PHP теперь мертв.

Я только что последовал эти инструкции и в итоге выполнил один скрипт perl, а затем команду pdftk

Я прекрасно понимаю, что это далеко не реальное решение PHP, но оно надежно и довольно легко реализовать на любой платформе *nix.

описанные там инструменты также доступны в Debian, на всякий случай, если вам интересно.

Это немного поздно, но посмотрите на PDFTemplate библиотека это именно то, что вы хотите. Вы можете создавать открытые файлы документов (odt) и добавлять в них заполнители. Библиотека PDFTemplate может заполнить эти заполнители (даже с изображениями) и создать PDF-файл.

ODT файлы с заполнителями в PDF

Если вы готовы использовать внешний сервис, PDF Otter может решить вашу проблему. Есть бесплатный план, который вы можете зарегистрировать и сразу же интегрировать в свое приложение.

дополнительные плюсы с использованием PDF Otter включают в себя меньше зависимостей в вашем приложении и более дружественный опыт выбора полей, которые вам нужно заполнить (я использовал ручные проб и ошибок, чтобы получить позиции полей в прошлом, и это было много времени).

Comments

    Ничего не найдено.