8
9

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-12-13

個人開発アドベントカレンダーにご招待されてしまったので僕も何か書こうと思います。
僕の場合は圧倒的技術力が無いのでお勉強からスタートすることが多いです。

帳票

この得意先は集計をまとめてこの形式で出してね。
あ、お客様からの手数料も計算して紙に出しておいて。
というような謎帳票が何個もあったりします。

古い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

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9