9

Web アプリに html ページとして埋め込まれたレポート、またはpdfとしてダウンロード可能なレポートを生成したいと考えています。したがって、 JasperReportsはこれらの要件を満たすと考えていたため、JasperReportsに出会いました。

現在、レポートは約 50 ~ 100 ページあり、ほぼヒストグラムといくつかの表のみで構成されていると想定しています。データは、DB からいくつかの高価なクエリによって取得されます。

一日中評価した後、Web アプリの側面に関していくつか疑問があります。

1) ページネーション: もちろん、すべてのページを 1 つの Web ページに表示したくはありません。ページネーションのようなものが必要です。しかし、JasperReportsはこのアプローチをサポートしていないようです。JasperReportsに付属している wepp デモは、進むべき道を示しています。JasperPrintを作成する必要があります。これは、すでに完全なレポートであり、不要なメモリを割り当て、高価なクエリを実行しています。その後、1ページを表示できました。しかし、これをページごとに何度も行うことは、適切な解決策とは思えません。

2) 前述のとおり、レポートはほとんどが図で構成されます。JasperPrintをその出力形式にエクスポートする際に画像が生成されます。すべてが正しいことを理解していれば、 JRに付属のImageServletは機能しますが、これらの画像を取得するには

i) 生成されたイメージをファイル システムから読み取ります
。ii) エクスポータはそれらをセッションに保存しました (したがって、メモリに)。

大量の画像があると思うので、Web アプリケーションのメモリ フットプリントを低く抑えたい場合、ii) はオプションではありません。しかし一方で、ファイルシステムをファイルであふれさせることも、私が想像できる最良のアイデアではありません。いつかファイルを削除しますか?

何か問題がありましたか?私の理解は正しいですか?

4

2 に答える 2

3

ページネーション

ページングがどのように実装されるかは、サービス設計の一種です。PDF は、印刷用のスタンドアロンの出力形式です。サーバーからこれ以上データを読み取ることはできません (Web サービスと Reader Extensions がなければ)。したがって、JasperReports がページング用のデータのサブセットのみであることを定義できます。

JasperReports でデータセットを定義すると、不要なメモリを割り当てずにデータセットを再利用できます。

画像

レポートに画像が必要で、メモリ使用量を低く抑える場合は、サーバーの負荷が指定された値 (前日の負荷の平均からの動的な値である可能性があります) を下回ったときに画像を生成するバランシング アルゴリズムを記述します。

画像をリアルタイムで作成する必要がありますか? イメージがサーブレットによって作成された場合、イメージはメモリにロードされます。Java アプリ。画像を ReportGenerator に渡すことができます。

イメージは、メモリ、ディスク、または URL からロードできます。ジャスパーレポートブックP:170

画像は HTTP_SESSION に保存しないでください! これは、メモリの肥大化を引き起こす完全なアンチパターンです。

于 2009-03-12T19:49:42.157 に答える
0

いいえ、あらゆる種類の問題が発生します。

XHTML/CSS でレポートを生成できると思います。PDF レンダリングが必要な場合は、Flying Saucer XHTML レンダラーを使用してください。

于 2009-03-12T19:53:00.150 に答える