Ищете альтернативу JasperReports

Когда-то мой босс спросил меня, что он хочет делать счета в PDF файлах из веб-приложения. Учитывая, что каждый использует JasperReports и iReport для дизайна, я попробовал это. Мое веб-приложение основано на Java + Hibernate и Spring. Вначале Джаспер казался прекрасным и iReport тоже. В любом случае меня остановили две вещи:

  • iReport - самая медленная вещь, которую я когда-либо видел в своей жизни.
  • Более серьезно, у меня есть определенные beans, которые имеют некоторую иерархию классов, и очень сложно справиться с этим в Jasper. Все в моем офисе используют Jasper с SQL-запросами, и таким образом это простой и удобный инструмент, но я потратил весь свой день на то, чтобы сопоставить мой beans с отчетами и вложенными отчетами и очень мало работ.

Я видел DynamicJasper, но, похоже, я не могу создавать отчеты с ним. Как вы думаете? Есть ли более простые в использовании альтернативы?

Ответы

Ответ 1

Если время имеет существенное значение (как обычно бывает, когда ваш босс вас что-то подает), я бы рекомендовал проверить iText (основной сайт здесь).

Это очень, очень просто узнать (вы можете запустить его, запустить и генерировать простые "Hello, PDF!" примеры за 20 минут) и экспортировать практически что угодно в PDF: таблицы, списки, графики, изображения, гипертекст и т.д.

По собственному признанию, JasperReports, реализующий его JRBeanCollectionDataSource, является более элегантным, гибким, постоянным решением для вас. Но если вам нужна быстрая n-грязная библиотека, чтобы просто создавать PDF файлы, и надвигающиеся крайние сроки приближаются, я бы загрузил iText JAR и имел на нем.

На сайт загружены практические примеры кода практически для всего, что вы хотели бы выполнить.

В отличие от JasperReports, iText не является генератором отчетов. Его просто генератор PDF (который, как я могу сказать в вашем вопросе, звучит как все, что вам нужно). Таким образом, для любого конкретного Bean вы просто выберите свойства, которые хотите экспортировать в счет-фактуру PDF, и используйте классы Chunk, Paragraph и т.д., Чтобы добавить их в документ по мере необходимости:

// Your POJO/Bean/VO
Employee oEmp = new Employee();

Document oInvoicePdf = new Document();
PdfWriter.getInstance(document, new FileOutputStream("/invoices/2011/Invoice201.pdf"));
document.open();
document.add(new Chunk("Employee name is : " + oEmp.getName()));
document.close();

Даже если это не то, что вы ищете, любой ценой Я бы рекомендовал вам избегать Apache PdfBox. По моему скромному мнению, это чистое зло и только разорвет ваше сердце.

Надеюсь, что это поможет и удачи!

Ответ 2

В качестве альтернативы iReport вы можете попробовать JasperWave-дизайнер для JasperReports. Чтобы решить вторую проблему, почему бы не написать какой-нибудь вспомогательный Java-код, который преобразует структуру beans в структуру отчета? В любом случае всегда легко сопоставить объекты Java с какой-либо плоской структурой. Создайте некоторый java-интерфейс, который скроет сложность базовой структуры beans. Не уверен, что вторая проблема - причина поиска альтернативного решения для отчетности.