PDF Generation Library для Java

Я знаю, что об этом уже спрашивали, но я все еще не определился, какую платформу для создания PDF использовать в моем текущем проекте.

Мои требования

  • оперативное создание PDF-документов (в основном, бланков заказов, счетов-фактур)
  • На основе Java
  • легко макетировать
  • должен быть с открытым исходным кодом
  • легко изменить макет

Многие люди, похоже, используют iText, но у меня есть некоторые опасения (помимо измененной лицензии) относительно разделения проблем: в контексте HTML есть хорошая поддержка MVC, где я обычно придерживаюсь Spring MVC и FreeMarker для разделения логики и макета. Я немного обеспокоен тем, что с iText вы в конечном итоге много смешиваете код и верстку.

Я знаю, что Apache FOP мог бы быть решением здесь, но с другой стороны я нахожу, что XSLT утомительно работать, и я прочитал, что FOP может быть медленным, когда дело доходит до огромного количества многих документов?

Я также рассмотрел JasperReports, но, насколько я понимаю, это больше подходит для отчетов, содержащих наборы табличных данных, а не для отдельных документов, таких как счета, которые требуют большого форматирования макета?

Есть мысли по этому поводу?

6 ответов

Решение

Попробуйте JasperReports. Используйте iReport для создания файлов.jrxml. JapserReports может обрабатывать сложные макеты. Для тех частей отчета, основанных на разных запросах, рассмотрим использование подотчетов, встроенных в основной отчет.

Подобно решению @Adrian Smith, этот подход отделяет редактирование макета отчета от источника данных.

Я реализовал хорошее решение, в котором мое программное обеспечение создает независимый от формата "чистый" XML-файл, затем я даю своему боссу XSD, и он помещает его в Altova StyleVision, где он может создавать отчеты WYSIWYG на основе данных, которые он извлекает из XSD. Это программное обеспечение производит XSLT. Итак, моя программа:

  • Производит независимый от формата "чистый" XML
  • Преобразует его с помощью XSLT, вывод которого - XML-FO
  • Используйте Apache FOP для преобразования XML-FO в PDF

Это действительно отличное решение, означающее, что мне (как программисту) больше не нужно менять свой код каждый раз, когда мой начальник хочет изменить цвет в отчете, моя задача - просто создавать "чистый" XML.

Обновление: я должен также указать, что я даю своему боссу доступ к нашему SVN-репозиторию с Tortoise SVN, который достаточно прост в использовании, чтобы он мог использовать его без ошибок. Поэтому он может проверять файлы XSLT прямо в SVN и запускать сборку / развертывание, даже не прерывая мою работу. Очевидно, что рабочий процесс работает только с людьми, которые достаточно точны, чтобы не делать ошибок и т. Д., Но в этом случае он работает хорошо для нас.

Исходя из моего опыта, я бы предложил вам рассмотреть следующие библиотеки Java PDF для создания отчетов PDF,

  1. DynamicReports
  2. Apache PDF Box
  3. iText PDF
  4. PDF Клоун

Для вашего требования я думаю, что DynamicReports будет правильным выбором. Я использую динамические отчеты за последние 3 года для всех моих требований к отчетности в формате PDF. С очень небольшим количеством кода вы можете легко создать действительно динамичный PDF. Dynamicreports - это оболочка для Jasper Report. Таким образом, он внутренне использует отчет Джаспера.

Docmosis позволяет вам создавать шаблоны в Word или OpenOffice Writer - разделение проблем и раскладка в наиболее знакомых инструментах.

Одна возможность

  • создавать свои документы в формате PostScript, а затем
  • преобразовать его в pdf, используя ghostscript (ps2pdf)

Я использую JODConverter некоторое время, и мне действительно это нравится.

Что мы делаем, это используем JODReports для генерации динамических документов OpenOffice.org (который внутренне использует FreeMarker). Затем мы конвертируем эти документы в документы PDF, используя JODConverter.

Это звучит как большая работа, но на самом деле это не так.

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