Библиотека создания PDF для Java
Я знаю, что это было задано раньше, но я все еще не определился с тем, для какой рамки генерации PDF использовать для моего текущего проекта.
Мои требования
- генерация PDF-документов на лету (в основном формы заказов, счета-фактуры)
- На основе Java
- легко для компоновки
- должен быть открытым.
- легко изменить макет
Многие люди, похоже, используют iText, но у меня есть некоторые проблемы (кроме измененной лицензии) относительно разделения проблем: в контексте HTML есть хорошая поддержка MVC, где я обычно придерживаюсь Spring MVC и FreeMarker для отдельная логика и макет. Я немного обеспокоен тем, что с iText вы в конечном итоге смешиваете код и макет.
Я знаю, что Apache FOP может быть решением здесь, но опять же я нахожу XSLT утомительным для работы, и я читал, что FOP может быть медленным, когда дело доходит до огромного throuput многих документов?
Я также рассматривал JasperReports, но, по моему мнению, это больше подходит для отчетов, содержащих табличные наборы данных, а не для отдельных документов, таких как счета-фактуры, для которых требуется много форматирования макета?
Любые мысли об этом?
Ответы
Ответ 1
Попробуйте попробовать JasperReports. Используйте iReport для создания файлов .jrxml. JapserReports может обрабатывать сложные макеты. Для тех частей отчета, которые основаны на разных запросах, посмотрите на использование вложенных отчетов в основной отчет.
Подобно решению @Adrian Smith, этот подход отделяет редактирование макета отчета от источника данных.
Ответ 2
Я реализовал хорошее решение, где мое программное обеспечение создает независимый от формата "чистый" XML файл, затем я даю моему боссу XSD, и он помещает его в Altova StyleVision, где он может проектировать отчеты WYSIWYG на основе данных, которые он выгружает из XSD. Это программное обеспечение создает XSLT. Итак, моя программа:
- Производит независимый от формата "чистый" XML
- Преобразует его в XSLT, выход которого - XML-FO
- Используйте Apache FOP для преобразования XML-FO в PDF
Это действительно отличное решение, означает, что я больше не должен (как программист) менять свой код каждый раз, когда мой босс хочет изменить цвет в отчете, моя задача - просто создать "чистый" XML.
Обновление:. Следует также отметить, что я предоставляю свой босс доступ к нашему репозиторию SVN с помощью Tortoise SVN, который достаточно прост в использовании, и он может использовать его без ошибок. Поэтому он может проверять файлы XSLT прямо в SVN и запускать сборку/развертывание без необходимости прерывать работу. Очевидно, что рабочий процесс работает только с людьми, которые достаточно точны, чтобы они не совершали ошибок и т.д., Но в этом случае нам все хорошо.
Ответ 3
Docmosis позволяет создавать шаблоны в Word или OpenOffice writer - разделение проблем красиво, а макет - в наиболее знакомых инструментах.
Ответ 4
Основываясь на моем опыте, я предлагаю вам рассмотреть следующие Java PDF Libraries для создания отчетов в формате PDF,
- DynamicReports
- Apache PDF Box
- iText PDF
- PDF Clown
Для вашего требования, я думаю, что DynamicReports будет правильным выбором. Я использую динамические отчеты за последние 3 года для всех моих требований к отчетности в формате PDF. С очень небольшим количеством кода вы можете легко создать действительно динамический PDF. Dynamicreports - обертка вокруг отчета Jasper. Таким образом, он внутренне использует отчет Джаспера.
Ответ 5
Я использовал JODConverter какое-то время, и мне это очень нравится.
Мы используем JODReports для создания динамических документов OpenOffice.org(которые внутренне используют FreeMarker). Затем мы конвертируем эти документы в PDF-документы с помощью JODConverter.
Звучит много, но на самом деле это не так.
Ответ 6
Одна из возможностей -
- чтобы создать документы в формате PostScript, а затем
- преобразуйте его в pdf с помощью ghostscript (ps2pdf)