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

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

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

Требования:

  • Не требуется сторонний веб-сервис

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

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

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

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

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

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

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

Я что-то пропускаю?

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

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

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

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

4b9b3361

Ответ 1

Пекка,

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

pdftk весьма полезен вообще, стоит взглянуть на.

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

Ответ 2

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

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

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

Ответ 3

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

Для этого есть также пакет ZF:

Ответ 4

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

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

Там реализована реализация как проект Apache - http://xmlgraphics.apache.org/fop/

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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

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

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

Ответ 9

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

Ответ 10

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

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

Ответ 11

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

Сначала ответьте на пару вопросов.

Q - Я что-то не замечаю?

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

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

A - Да. absolutelly tric для этого заключается в использовании PDF-форм

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

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

P.S

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

Ответ 12

Мне удалось заменить значения-заполнители в .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

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

Ответ 13

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

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

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

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

Ответ 14

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

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

Ответ 15

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

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

Ответ 16

DOM Pdf и mPdf - две библиотеки, доступные для достижения этой цели.