Библиотека генерации PDF для Java [закрыта]

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

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

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

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

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

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

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


person Stefan Haberl    schedule 21.10.2010    source источник
comment
@Pang и др.: Вы мне очень нравитесь, ребята: я знаю правила не по теме, но все же: это легко мой самый популярный вопрос, с наибольшим количеством голосов и просмотров, так что я думаю задавать такого рода вопросы полезно для пользователей SO. Почему вы продолжаете закрывать такие вопросы, я совершенно не понимаю.   -  person Stefan Haberl    schedule 02.02.2017
comment
Хабери, я тоже этого не понимаю. Закрыв вопрос в аналогичном ключе, они вместо этого рекомендовали сайт SO для рекомендаций по программному обеспечению, но я просил библиотеку или структуру для облегчения реализации алгоритма маневровой станции (который я реализовал довольно много раз), в любом случае это не так. не имеет значения, если это текстовый процессор, или программная библиотека, или программная среда, по-видимому, это правильное место, где можно спросить... что хорошо, спрашивать легко, но вряд ли кто-то будет часто встречаться, у кого действительно есть ответ!   -  person Quaternion    schedule 25.01.2018


Ответы (6)


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

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

person Janek Bogucki    schedule 21.10.2010
comment
+1 Похоже, тоже хороший продукт! - person Adrian Smith; 21.10.2010
comment
Спасибо, Янек, думаю, я сделаю прототип с помощью Джаспера. - person Stefan Haberl; 22.10.2010
comment
На всякий случай, если кто-нибудь из будущего наткнется на эту старую тему: используйте JasperSoft Studio прямо сейчас. вместо iReport. - person Stefan Haberl; 29.01.2015
comment
JasperReports — мощное приложение для составления отчетов. Он делает PDF-файлы, но интегрировать его в другое приложение — дело сложное (говорю по опыту). Я бы выбрал что-нибудь попроще, желательно библиотеку. - person artbristol; 09.03.2020

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

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

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

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

person Adrian Smith    schedule 21.10.2010

Основываясь на своем опыте, я бы посоветовал вам рассмотреть следующие Библиотеки Java PDF для создания отчетов в формате PDF,

  1. Динамические отчеты
  2. PDF-файл Apache
  3. iText PDF
  4. PDF Клоун

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

person Prasanna L M    schedule 29.12.2016
comment
Похоже, ссылка на DynamicReports не работает - person JFreeman; 20.11.2018
comment
Я обновил ссылку. Исходный веб-сайт, на котором размещались динамические отчеты, больше недоступен. Ссылка не работает последние пару месяцев. Сейчас несколько членов сообщества поддерживают этот проект. - person Prasanna L M; 01.01.2019

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

person Paul Jowett    schedule 29.10.2010

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

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

Кажется, что работы много, но на самом деле это не так.

person Shervin Asgari    schedule 21.10.2010

Одна из возможностей

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