このところ、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かな!!