コラム
2019/02/25

帳票 「JasperReports」をご紹介します。

  • 運用
  • 開発

JasperReports は、米Jaspersoft社が開発/販売しているオープンソースの帳票出力用のソフトウェアです。
今回このソフトウェアを利用するPRJに参画したためその特徴などご紹介します。

リーフレットダウンロード  「JasperReports」をもっと知りたい方はこちらへ

関連製品

    特徴

    • オープンソースの為、無料(バージョンによる)
    • java から出力可能
    • GUIエディタがあり、出力イメージを元に項目を配置可能

    使用経緯

    • 2010年に保守作業をしていたシステムで、顧客から現在の帳票はSVFでSVF用サーバの維持費がかかるので、 このサーバの廃止依頼を受けWebで開発・運用が安価な帳票を探していて見つけ導入しました。
    • 途中参画したPRJでこのJasperReportsが使用されていました。PRJ担当者によると、他案件でも JasperReports は使用されているが、作業が出来る人が少ないとの事でした。
      以前JasperReportsを使用した開発を実施したことがある経験から、経験者としてPRJに参画しましたが、今後も支援依頼があった場合などに、この紹介が活用できればと思います。

    使用詳細

    JasperReports自体は帳票を出力するツールのため、このツールを使用するのは実行環境を構築する人ぐらいです。
    帳票を作成する多くの人は帳票作成ツールとなりますので、こちらをメインに紹介します。
    最新は、Jaspersoft Studio の様ですが、今回使用したのは iReport となります。

    出力に使用するデータについて

    2010年当時の開発では、単票2本、一覧2本を作成しました。

    • 単票の出力データは、java から全て引数として受取る方法
    • 一覧の1つの出力データは、java から一覧のデータを vector型に入れた物を受取る方式
    • 一覧の残りは、帳票自体がデータベースに接続し、SELECT文を実施し、出力データを取得する方式

    と3パターンで実施。(元の SVF の方式を引継ぐ)

    今回出力データは、CSVファイルで出力をする方法をとりましたが、Excelなどでも出力出来るようです。

    出力形式の種類について

    今回作成した帳票の出力形式はPDFでの出力であったが、PDF以外にもHTML、Excel、Word、Power Point、Text、CSV が選択できます。

    PDFで出力する場合の注意する点について

    PDF出力の場合、日本語対応に制限があります。
    以前のバージョンでは、iTextAsian.jar を導入し、出力項目の pdf font name プロパティでHeiseiKakuGo、HeiseiMin の2種類のフォントからの選択となってしまいます。
    新バージョンではpdf font name プロパティは非推奨となっており、ツール - オプション から fonts タブでフォントファイルを追加し、font name プロパティを使用するようになっていました。 使用するフォントファイルは、フリーの IPA のフォントを使うのが主流のようです。
    ただ、その設定方法を実施しましたがうまく使用できず、調査した結果、設定に使用したフォントファイルの中身が空になっている事が分かりました。今回はフォントファイルを上書きする事で解消できました。
    またPDFファイルは正常に出力されましたが、Preview がエラーで表示されなくなり、フォントファイルをOS自体にもインストールする事で解消出来ました。

    Background bandについて

    1ページの出力データ件数に関わらず、ページの下まで罫線がある様な帳票の時に使用しました。
    Backgroupd は1ページ分の背景を設定する箇所の為、ここに1ページ分の罫線などを設定しておけば、データ行数に関わらず罫線を出力できます。

    1行に複数明細列の出力について

    設計書内で定義された帳票のレイアウトを確認したら、1行に3列の明細出力となっておりました。具体的には左端の上から下へ明細出力後に中央の上から下へ明細を出力し、最後に右端の出力となっていました。

    1行に複数明細列の出力

    複数明細を1行で出力するにはSELECT 文などで1行を取得する時に出力する列分取得しておく必要がありそうと考え、どの様に実現ができるか?そもそも実現できるのか?と悩みました。しかしiReport の設定などをいろいろ見てたところ、1行に複数明細出力する機能が存在しており、何列出力するかを設定するだけで実現する事が出来ました。

    1行に複数明細列の出力

    使用の感想

    無料ですが、基本的な帳票は対応できます。