Как динамически генерировать PDF документы

Я хочу создать веб-приложение для создания стильных PDF-документов. Макет должен основываться на шаблонах дизайна, а данные должны поступать динамически из базы данных. В идеале я хочу создать шаблон в инструменте «публикации» с заполнителями и заменить эти заполнители веб-приложением данными из базы данных. Подумайте о чем-то похожем на генератор счетов, где клиент может выбирать из различных шаблонов счетов и самих данных счетов, поступающих из БД. Спасибо за ваши идеи!

1
задан 27 May 2013 в 14:56

3 ответа

Я использовал Java, Jasper Reports и iReport для аналогичной задачи. Надеюсь, это поможет.

0
ответ дан 27 May 2013 в 14:56

Я использую perl (с HTML :: Template) для генерации документа .ods из данных базы данных, затем я использую unoconv для преобразования его в pdf. Чтобы быть точным:

  • сначала создайте документ .ods, который выглядит хорошо. Убедитесь, что переменные поля распознаваемы.
  • разархивируйте документ .ods и отредактируйте файл contents.xml.
  • в contents.xml, измените все переменные поля на < TMPL_VAR > теги в соответствии с HTML :: Template. Этот файл contents.xml будет вашим шаблоном.
  • написать Perl-программу, которая читает базу данных, заполняет поля TMPL_VAR, записывает новый файл contents.xml и повторно упаковывает новый файл contents.xml в новый документ .ods.
  • затем используйте unoconv для преобразования нового документа в pdf.

Легко расширяется, чтобы использовать более одного шаблона.

0
ответ дан 27 May 2013 в 14:56

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

Начнем с общего правила: единого лучшего решения не существует. В основном все сводится к тому, с чем вам удобно создавать документ.

Если вы знаете LaTeX, это очевидная возможность. Документы на LaTeX красивы, по определению.

Если вы не знаете LaTeX и вам удобнее пользоваться несколькими опциями, но вы знаете режим орг, это еще один хороший способ. Документы в режиме org можно конвертировать в LaTeX, которые можно конвертировать в PDF, и они тоже выглядят очень хорошо. pandoc может быть в состоянии сделать это напрямую, но я этого не проверял.

Конечно, другая возможность состоит в том, чтобы спроектировать ваш документ в режиме org, позволить Emacs создать из него код LaTeX, а затем использовать этот документ LaTeX для заполнения переменных в каждом экземпляре, прежде чем компилировать его в PDF. Таким образом, вам по-прежнему не нужно разрабатывать документ в LaTeX и не нужно строить из документов в режиме org, а из документов LaTeX.

Если у вас все в порядке с меньшим количеством и вы не хотите делать много, вы можете использовать уценку. Markdown предлагает на сегодняшний день наименьшее количество опций, как в опциях дизайна, так и в типах контента. Тем не менее, его очень легко изучить и использовать, и вы можете создать свой документ прямо здесь, на StackExchange, с предварительным просмотром в реальном времени. Это также должно дать вам представление о его пределах. В уценке есть хорошие документы, но обычно требуется много настроек для желаемого формата вывода (в вашем случае это, вероятно, многостраничный документ DIN A4 PDF), что в некоторой степени противоречит цели простоты изучения. Конечно, это может быть очень хорошим решением для людей, которые хотят написать много - например, документации в уценке, поскольку это очень легко записать, но в вашем случае, пишущая часть автоматизирована, так что преимущество не действительно считайте, и простота использования языка может не стоить того, чтобы документы выглядели так, как вы хотите, чтобы они выглядели.

Если вас не устраивает ни одно из вышеперечисленных, вы можете использовать подход Jos для проектирования вашего документа в LibreOffice, распаковки, изменения его content.xml, его упаковки снова и преобразования в PDF. Однако, хотя это дает вам гораздо больше возможностей, чем уценки, оно дает вам гораздо меньше возможностей, чем LaTeX, и переход на уровень режима org будет громоздким. На самом деле, кажется, что все это сложно адаптировать быстро, потому что это требует много шагов, когда вы хотите изменить свой документ. Это также кажется наиболее подверженным ошибкам. Не обязательно в виде «PDF в конце концов», но в стиле «похоже, что должно»

.

Одно важное замечание: не пытайтесь отключить LibreOffice для Microsoft Office. Хотя вы можете найти инструменты для преобразования этих файлов в PDF, использование их форматов выглядит очень плохой идеей. Причина в том, что LibreOffice использует стандарт OpenDocument, который использует стандартные zip-файлы, поэтому вы можете использовать любой zip-инструмент для извлечения и упаковки файла. С другой стороны, файлы Microsoft Office основаны исключительно на zip. Вы сможете извлечь их обычными zip-инструментами, но не сможете упаковать их стандартными zip-инструментами.

org-mode или LaTeX особенно полезны, если вы хотите оглавление. Возможно, с другими тоже, но больше работы. Если вам нужно множество вариантов и вы готовы учиться в случае необходимости, LaTeX определенно является подходящим вариантом.

0
ответ дан 27 May 2013 в 14:56

Другие вопросы по тегам:

Похожие вопросы: