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,
- DynamicReports
- Apache PDF Box
- iText PDF
- PDF Клоун
Для вашего требования я думаю, что DynamicReports будет правильным выбором. Я использую динамические отчеты за последние 3 года для всех моих требований к отчетности в формате PDF. С очень небольшим количеством кода вы можете легко создать действительно динамичный PDF. Dynamicreports - это оболочка для Jasper Report. Таким образом, он внутренне использует отчет Джаспера.
Одна возможность
- создавать свои документы в формате PostScript, а затем
- преобразовать его в pdf, используя ghostscript (ps2pdf)
Я использую JODConverter некоторое время, и мне действительно это нравится.
Что мы делаем, это используем JODReports для генерации динамических документов OpenOffice.org (который внутренне использует FreeMarker). Затем мы конвертируем эти документы в документы PDF, используя JODConverter.
Это звучит как большая работа, но на самом деле это не так.