web-dev-qa-db-ja.com

JasperReportsに代わるものを探しています

ある日、上司から、WebアプリケーションからPDF形式の請求書が欲しいと言われました。誰もがJasperReportsとiReportを設計に使用していることを考えて、私はそれを試しました。私のWebアプリはJava + HibernateとSpringに基づいています。当初、Jasperは問題なく、iReportも問題ないようでした。とにかく私は2つのことによって止められました:

  • iReportは、私がこれまでに見た中で最も遅いものです。
  • さらに深刻なことに、クラス階層を持つ特定のBeanがあり、Jasperでこれを処理するのは非常に複雑です。私のオフィスの誰もがSQLクエリでJasperを使用しているので、それは簡単で便利なツールですが、私は1日中、Beanをレポートとサブレポートにマッピングしようとしました。

DynamicJasperを見たことがありますが、それを使ってレポートをデザインできないようです。どう思いますか?使いやすい代替手段はありますか?

17
gotch4

時間が重要な場合(上司から何かが渡される場合によくあることですが)、チェックアウトすることをお勧めしますiText(メインサイトは ここ )。

習得は非常に簡単で(20分で簡単な「Hello、PDF!」の例を起動、実行、生成できます)、テーブル、リスト、チャート、画像、ハイパーテキストなど、ほぼすべてのものをPDFにエクスポートできます。等.

私自身の承認により、そのJRBeanCollectionDataSourceを実装するJasperReportsは、よりエレガントで、柔軟性があり、永続的なソリューションです。しかし、PDFを作成するためだけにquick-n-dirtyライブラリが必要な場合は、and迫り来る締め切りが迫っています。私は、iTextJARをダウンロードして用意します。

このサイトには、達成したいほぼすべての実用的なコード例がロードされています。

JasperReportsとは異なり、iTextはレポートジェネレーターではありません。それはただのPDFジェネレーター(あなたの質問で私が言えることから、あなたが必要とするすべてのように)。したがって、特定のBeanについては、 PDF請求書にエクスポートするプロパティを選択し、ChunkParagraphなどのクラスを使用して、必要に応じてそれらをドキュメントに追加します。

// 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's name is : " + oEmp.getName()));
document.close();

これがあなたが探しているものではない場合でも、すべてのコストで私はあなたにApachePdfBoxのsteerclearをお勧めします。私の謙虚な意見では、それは純粋な悪であり、あなたの心を壊すだけです。

これがお役に立てば幸いです。

5
IAmYourFaja

IReportの代わりに、JasperReports用のJasperWaveデザイナーを試すことができます。 2番目の問題に対処するために、ヘルパーを記述しないのはなぜですかJava Bean構造をレポート構造に変換するコード?いずれにせよ、マップするのは常に簡単ではありませんJavaある種のフラット構造へのオブジェクト。基礎となるBean構造の複雑さを隠すJavaインターフェースを作成します。2番目の問題が代替のレポートソリューションを探す理由であるかどうかはわかりません。

3
Maksym Sergunin