menu

JavaでPDFのテンプレートを作成し、帳票作成を行う

公開日:2019年06月12日 カテゴリー:Java, 開発

はじめに

Javaを使用しPDFのテンプレートを作成する方法を紹介しようと思います。

今回は、「JaspersoftStudio」というツールを使用しテンプレートを作成します。

また、eclipseの動作環境はすでに構築済みという前提ですので、あらかじめご了承ください。

 

Jaspersoft Studioとは

グラフ、画像、罫線をGUIで簡単に配置し、テンプレートを作成することができます。

そして、内部ではxmlが作成されており、もちろんxmlのコーディングを行うこともできます。

今回は、GUIで簡単にテンプレートを作成する方法を紹介したいと思います。

 

準備するもの

・JaspersoftStudio

 

流れ

JaspersoftStudioをインストール

テンプレート作成

フォント設定

Javaでテンプレートに値を当てはめ、出力

 

手順

JaspersoftStudioをインストール

https://community.jaspersoft.com/project/jaspersoft-studio/releases

上記のリンクから「TIB_js-studiocomm_6.6.0_windows_x86.exe」を選択し、インストール

※インストールする際、ログイン、新規登録などを求められますが、特に問題ないので、登録しちゃいましょう

 

プロジェクトの作成

インストールが完了するとこんな画面が立ち上がったと思います。

「ファイル」→「新規」→「プリジェクト」を選択

「JasperReports Project」を選択し次へ

プロジェクト名を決めて完了をクリック

 

これで左上のプロジェクト一覧に作成されているのを確認出来たら完成です。

 

テンプレートを作成の準備

先ほど作成したプロジェクトを選択し、左クリック

 

「新規」→「Jasper Reports」を選択

 

 

「Blank A4」を選択

※これは空のテンプレートです

 

 

テンプレート名を決めて、完了

 

 

こんな感じになればOK

 

これで作成の準備は完了です!!

 

これでテンプレートの作成準備は完了です。

 

画面について

では、まずは基本操作と配置場所についての説明から。

特に配置場所については適当に置いてしまうと思い通りにテンプレートを作成することができないため、気を付けてください。

 

タイトル

その名の通りタイトルを表示します。

複数枚のテンプレートを作成する場合は、ここに配置を行った要素は、1枚目のみ出力が行われます。

 

ページ・ヘッダー

複数枚になるテンプレートを作成する際、ヘッダーとして設定した要素を配置します。

 

列ヘッダ

テーブルなどのヘッダーとして設定したい要素を配置します。

各項目の名前などを配置する場合はここに書くことになります。

 

詳細1

テーブルのデータの内容や、今回領収書を作るので、支払った金額などを配置します。

基本的には、この詳細に配置することが多いです。

 

列フッター

テーブルなどのフッターとして設定した要素を配置します。

例えば、テーブルの各項目の合計金額を表示したいとなれば、ここに書くことになります。

 

ページフッター

複数枚になるテンプレートを作成する際、フッターとして設定した要素を配置します。

ページ数などはここに書く場合が多いです。

 

パレット

文字や図形の配置を行う際に使用します。

 

プロパティ

各要素の詳細な設定を行うことができます。

文字の大きさや、文字の色の指定を行うことができます。

 

よく使うのは、主にこれぐらいになります。

領収書の作成では、紹介させていただいた基本操作の一部を利用するだけで作成が可能です。

 

テンプレートの作成

まずは完成イメージです。

こんな感じで作成していこうと思います。

ちなみに”null”になっている部分は、後でJavaからパラメータを渡して金額や入金日を表示できるようにします。

 

フィールドの作成

まずはJavaからパラメータを受け取るためのフィールドを作成します。

画面左下のアウトラインタブから

「フィールド」を右クリック → 「フィールドの作成」

するとフィールドが画面右下に作成されます。

今回は合計で5つのフィールドを使用しますので、先に作成を終わらせたいと思います。

 


名前 : name

クラス: java.lang.String


名前 : amount

クラス: java.math.BigDecimal


名前 : remarks

クラス: java.lang.String


名前 : paymentDate

クラス: java.util.Date


名前 : paymentTypeName

クラス: java.lang.String


 

タイトルの設定

画面右上のパレットタブの中から「Static Text」をタイトルの部分にドラッグアンドドロップします。

値を設定するために、StsticTextをダブルクリックし、「領収書」と入力。

そのあと、プロパティ文字サイズや、下線を引いてこんな感じに

 

ページヘッダーの設定

今回、複数ページでの出力は想定しないため

左下のアウトラインタブから

「ページヘッダー」をクリック → 削除

と進み、削除します。

 

列ヘッダーの設定

ここには、発行日、宛名を設定します。

画面右上のパレットタブの中から

「テキストフィールド」を2個

「Static Text」を2個

ドラッグアンドドロップします。

 

※テキストフィールドとStaticTextの違い

テキストフィールドは動的値、StaticTextは静的値です。

 

StaticTextの設定

「発行日」、「御中」と入力しこんな感じで、配置を行う

 

テキストフィールドの設定

1つは先ほど作成した「name」フィールドを選択します。

もう1つは直接、「new java.util.Date()」とJavaのコードを記述します。

そのあと、文字の大きさや、配置をこんな感じに配置します。

 

詳細の設定

 

まずは必要になる要素を用意します。

「Static Text」を10個

「テキストフィールド」を4個

ドラッグアンドドロップします。

 

 

そして、上記の画像と同じように配置を行います。

「StaticText」は赤で

「テキストフィールド」は青で

色を付けていますので参考にしてください。

 

列フッター、要約の設定

今回は使用しませんので、ページヘッダーの設定で行った削除を行ってください。

 

 

こんな感じで作成ができれば、テンプレートの完成です!!!

※罫線が多く感じますが、升目と各要素を示している線、独自で設定を行った罫線が混在しているためイメージと違うかもしれませんが、

出力を行う際は独自で設定を行った罫線のみ出力されるのでご安心ください。

 

jrxmlファイルの移動

作成したテンプレートをJava側から呼び出すために、ファイルを移動します。

移動しなくても大丈夫ですが、管理しにくくなる可能性があるので・・・

今回はCドライブの直下にフォルダを1つ作成し、そこに移動するようにします。

 

フォントを指定

フォントのダウンロード

日本語で帳票を出力する場合、フォントの指定が必要になります。

今回は「IPAex明朝」というフォントを利用しますのでダウンロードを行います。

https://ipafont.ipa.go.jp/node26#jp

からダウンロードを行います。

.zipファイルでダウンロードされるので、解答を行います。

今回私は、Cドライブの直下に保存しました。

 

 

IPAフォントとは

日本語文書を作成する際によく使用されるフォントで、

和文文字(仮名、約物、漢字)を固定幅、欧文文字を変動幅として単一のフォントに統一去れているのが特徴です。

 

Jaspersoftにフォントの設定を行う

プロジェクトの上で

「右クリック」→「プロパティ」

の順でクリック

 

「JaspersoftStudio」→「フォント」→「追加」

 

Family Name

IPAex明朝

「参照…」をクリックし、先ほどダウンロードし、解凍した.ttfファイルを選択し、完了をクリック

 

あとは各要素にフォントを設定します。

変更する要素をクリックし、右下のプロパティから、拡張をクリック

 

少し下にスクロールし、フォント名をクリックし、「IPAex明朝」を選択

 

これを日本語で表示しないといけないところ全てに設定する必要があります。

 

完成形のjrxmlファイルのソースがこちらです。

 

これで、テンプレートの作成の完了です。

 

Javaでのテンプレートの使用

ライブラリの準備

https://jar-download.com/artifacts/net.sf.jasperreports/jasperreports

ここから、jarファイルのダウンロードを行うことができます。

バージョンは6.6.0を使用します。

Mavenでのダウンロードを行う場合は以下のコードをご利用ください。

 

ソースフォルダの作成

こんな感じでソースフォルダを作成します。

 

ソースコード

Main.javaのソースコードはこちらです。

new File("C:\\pdfsample\\sample.jrxml")の引数にはJaspersoftで作成.jrxmlファイルまでのパスを指定します。

今回は、先ほどjrxmlファイルを移動した先を指定しています。

また、exportReportToPdfFile(jasperPrint, "receipt.pdf")の第2引数のは出力するPDFファイルのファイル名を指定しています。

 

フォントの設定

eclipse側でもフォントの設定をしないと、日本語の出力を行うことができないため、設定を行います。

fontsフォルダの中には先ほどダウンロードしたフォントを配置します。

 

pdf_font.xml

jasperreports_extension.properties

 

これで、Main.javaを起動すると、PDFファイルがJapaプロジェクトのフォルダの中に、PDFファイルが作成されます。

 

まとめ

どうでしたか?

うまくPDFファイルが出力されたでしょうか?

あとは、出力する場所を設定したり、Webからのリクエストに対してダウンロードしたり、色々活用してください!

 

最後までお読みくださり、ありがとうございました。

 

☆☆☆ 新しいことにチャレンジしたい!仲間と一緒に成長したい!やりがいのある仕事で充実した毎日を過ごしたい!そんな熱意をお持ちの方、私たちと一緒に働きませんか?ウィズテクノロジーでは一緒に働いていただけるエンジニアを大阪・東京で募集しています。☆☆☆