2018年4月21日土曜日

Java EEで帳票を出すのに色々悩んだ話

このところ、Java EE + JSFのプログラミングをやってるのですが、さらに帳票を出力するプログラムをWebで作るところまで話が進んできました。

帳票って言うと、マイクロソフトのAccessってのがあって、これがもう簡単に高度なものをしかも素早く作る事が出来る!!

帳票設計しろ!!と言われたら、「おうAccess!!」ってな感じでやって来たのでした。

Accessそのものはデスクトップベースの技術ですが、サーバーにプログラムを置いて、Web画面からダウンロードして自動実行するように作ってれば問題なかったし。


でも完全にWebベースで、しかもJava EEで設計しろと言われると頭から火を吹く。

「Javaで帳票なんてどーやるの!?」という所から始めないといけないし、短い時間でものを作らないといけないし。

燃えるぜ!!

というわけで、私の無知のせいで、まぁ一日に数百件くらいの新しい知識・用語の海と大激闘をせねばならなかったのですが、なんやかんやと、Jaspersoft Studioってのが無償で帳票を簡単に作れる!!というのが分かり、作りました。

Jaspersoft studioは、eclipseのプラグイン版と、eclipseをベースにして単独のIDEとして作られた単体版があるのですが、単体版で開発してみました。


帳票を作るのは楽だけど、いかんせん手探りでやってるから、データ連携でかなり苦労しましたね。

流れ的には以下のようになります。

(1)Jaspersoft Studioで帳票のレイアウトとバイナリファイルを作る。

(2)自分のプログラム(Mavenプロジェクト)にリソースとして配置する

(3)帳票に印字したいデータを作り、Entity Beanに入れる。

(4)Entity Beanをデータソースにして帳票に流し込む。

(5)帳票といっても、PDFやXLSX形式とかに出力する。

(6)PDFはブラウザにレスポンス出来るので一番受け取りやすい



帳票には中身のデータソースが必要ですが、開発中のデータ確認には、SQL-Serverのストアドプロシージャを直接実行して取得するパターンとし、自分のJava EEプログラム(Mavenプロジェクト)に配置する時には、Entity Beanから取得する版と、2つのデータソースを使い分けるようにしました。

帳票と言っても、結局は、Jasper Report Libraryを使って、PDFでブラウザにレスポンスを返し、ダウンロードするなりファイルをオープンするなりし、そこから印刷したければする・・・というやり方です。

バーコードとか日本語フォントとか、いちいち環境問題にひっかかりつつも、一個一個クリアして行って問題なし(多分)。

Javaで帳票をやる、と来たら、Jaspersoft Studioかな!!