個人開発アドベントカレンダーにご招待されてしまったので僕も何か書こうと思います。
僕の場合は圧倒的技術力が無いのでお勉強からスタートすることが多いです。
##帳票
この得意先は集計をまとめてこの形式で出してね。
あ、お客様からの手数料も計算して紙に出しておいて。
というような謎帳票が何個もあったりします。
古いFileMakerで作られていて変更もままならない。
iReport Designerというツールを探し出して帳票設計して出力するようにしました。
これを事務に配布して自分で印刷してもらうことにしました。
それも時代と共に問題が…。
- iReport -> JaspersoftStudio
- Java6時代遅れ
- itextasian -> font_extension
- Web対応
##iReport Designerは開発終了
JaspersoftStudioという帳票設計ツールがあるのでそっちで開発してねって開発者に直接言われました。
JaspersoftStudioだと印刷ができない。💦
iReport Designerで帳票設計してDatasourceを指定して印刷するだけにしていた。
事務の人にこれ印刷しておいてで済んだのに…。
Javaでjarファイル作ってkickかな。
そしてjrxmlをkickしてプリンターに出力する簡単なjavaプログラムを作った。
###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の著者さんです。
JasperReport版のサンプル作ってみました。こんなイメージでしょうか?https://t.co/M1MQrMInq0
— Toshiaki Maki (@making) 2017年12月13日
###JasperBoot
どんなJRXML Templeteを入れても動くように変更してみた。
フルオープンな場所なので追加はしてませんが、
JDBC DriverやConnectionを追加すればDBのデータもPDFにできます。