Edited at

Spring Bootで日本語PDF出力したい

More than 1 year has passed since last update.

個人開発アドベントカレンダーにご招待されてしまったので僕も何か書こうと思います。

僕の場合は圧倒的技術力が無いのでお勉強からスタートすることが多いです。


帳票

この得意先は集計をまとめてこの形式で出してね。

あ、お客様からの手数料も計算して紙に出しておいて。

というような謎帳票が何個もあったりします。

古いFileMakerで作られていて変更もままならない。

iReport Designerというツールを探し出して帳票設計して出力するようにしました。

これを事務に配布して自分で印刷してもらうことにしました。

それも時代と共に問題が…。


  1. iReport -> JaspersoftStudio

  2. Java6時代遅れ

  3. itextasian -> font_extension

  4. Web対応


iReport Designerは開発終了

JaspersoftStudioという帳票設計ツールがあるのでそっちで開発してねって開発者に直接言われました。

JaspersoftStudioだと印刷ができない。💦

iReport Designerで帳票設計してDatasourceを指定して印刷するだけにしていた。

事務の人にこれ印刷しておいてで済んだのに…。

Javaでjarファイル作ってkickかな。

そしてjrxmlをkickしてプリンターに出力する簡単なjavaプログラムを作った。

JasperCSVprint - GitHub


Java6時代遅れ

何故だ!

何故、俺のjarファイルが動かない!

Java6だからか?

NetBeansのbuildをJDK8にして再コンパイル。

ふー、何とか動くか。


iTextAsianはサポートしない

いつからかiTextAsianをサポートしなくなってしまいました。

font_extensionという機能を使えとのこと。

Jaspersoft Studioだと出来た。

jarファイルの場合はどうすればいいのだろうか…。

Javaで帳票をPDF出力(JasperReport) - Qiita

上記のサイトを参考にしまいた。

さらにGithubでSource探し。

紆余曲折あってjarにキックできるものは作り出せました。

下記のGithub がそうです。

その過程でNetBeansとMavenに愛想をつかすわけですが…。

JasperReportsFont - Github


Web対応

印刷する帳票ファイルを各自にばらまくのが面倒。

WebにしてPDF出力にして勝手に印刷させられないだろうか?

JavaはServletコンテナが辛い。

ゲリラ展開を考えるとSpring Bootだろうな。


課題から足りない技術を考える

圧倒的Java力 (´;ω;`)

というと身もふたもないので、


  • Spring Boot

  • Gradle or Maven

  • JasperReport Library

先ずはこんなところでしょうか。


Spring Boot

最初はspring.ioの写経をしてました。

語学力に限界を感じて はじめてのSpring Boot [改訂版] を買って写経し始めました。


Gradle

Font_extensionsを使ったSampleを探し始めてました。

Javaの場合、font_extensions等のresourcesを置く場所は決まっています。

mavenやgradleの決まりだと project/src/java/resources のようです。


  • NetBeans


    • jarにするとfont_extensionを読まない

    • Spring Bootは推奨されてない



  • eclipse


    • jarにしてもfont_extensionを読む



NetBeans卒業決定(´;ω;`)


  • Maven


    • font_extensionsのサンプルが無い。

    • 本家はant_ivy



  • Gradle


    • 時代はGradleなのか何故かサンプルあり



Maven卒業(´;ω;`)

Spring BootもGradleでも動くようなのでGradleにした方が良さそう。

Gradleは公式Tutorialを一通り読んで写経しました。

時間掛かった。

現在、Gradle Version4.4 です。

去年までVersion2.0だったのにね。

進化が速すぎて書籍だと間に合わないかも。

Gradleマスターとはいきませんが怖くはなくなりました。


Spring Boot+JasperReports+font_extensions

現在、これに取り組んでいる途中。

Spring BootのサイトにはJasperViewというSpring BootのLibraryを使ったSampleがある。

しかし、Spring Framework v5からは削除されてしまうのでJasperReports Libraryを直接呼んでPDFに出力した方がよさそうだ。

Sourceは?

現在進行中。

なんとmaking氏がsampleプログラムを作ってくれました。

はじめてのSpring Bootの著者さんです。


JasperBoot

どんなJRXML Templeteを入れても動くように変更してみた。

フルオープンな場所なので追加はしてませんが、

JDBC DriverやConnectionを追加すればDBのデータもPDFにできます。

JasperReportsBoot - GitHub