Imagegagick
前回でImageMagickの基本操作を説明したので、今回は帳票作成について説明します。
ImageMagick を使った帳票作成のフローは以下のようになります。
帳票のテンプレートです。罫線や固定文字列はあらかじめテンプレートで作成しておきます。
テンプレートはPNG形式がお勧めです。 テンプレートにPDFを使うと、変換時に劣化が発生します。 -qualityオプションで品質を上げることも出来ますが処理時間が長くなります。
そのため 入力はPNG、出力は PDF が効率が良いです。
帳票に印字する文字列の集合です。
出来上がった帳票です。
帳票作成で肝になるのが -drawオプションです。
https://www.imagemagick.org/Usage/text/#draw
公式サイトにもサンプルが豊富にあります。
https://www.imagemagick.org/Usage/draw/
https://www.imagemagick.org/Usage/draw/#tex
実際に試してみます。
$ convert -font Ricty-Diminished-Regular -draw "text 50,50 '日本語'" template.png output.pdf
テンプレートファイル(template.png)の 左上座標を(0,0)として、(50,50)の位置に出力します。
(出力結果)
-drawオプションの引数にファイル名を指定することができます。(@ファイル名)
$ convert -font Ricty-Diminished-Regular -draw @input.txt template.png output.pdf
ファイルの中には複数のコマンドを記述できます。
(出力結果)
線や矩形、楕円などの図形を書いたり、画像を貼り付けたり、いろいろなことが可能です。
(出力結果)
テンプレートファイルとdrawオプションを組み合わせて帳票作成を作成してみます。
使用するテンプレートはコレです。 税務署からPDF形式でダウンロードできるので、GIMP等でPNG形式に変換します。
今回は決め打ちで出力データを作成します。
font-size 12
text 393,187 '569 1041'
font-size 14
text 120,210 '茨木'
text 380,210 '大阪府高槻市北園町 13-29'
font-size 12
text 603,227 'xxx yyy zzzz'
font-size 10
text 380,317 'カブシキガイシャ ビットセット'
font-size 20
text 380,350 '株式会社 bitset'
font-size 12
text 630,340 'HH MM DD'
font-size 16
text 380,395 'システム開発'
font-size 16
text 600,395 'bitset'
# 楕円(平成を囲む)
stroke red
fill-opacity 0
ellipse 612,349 15,7 0,360
赤文字が帳票上に出力する文字列です。
以上のデータから帳票を作成します。(結果がわかりやすいように赤文字で出力しています)
$ convert -font Ricty-Diminished-Regular -fill red -draw @input.txt template.png output.pdf
上記を実行すると、以下のようなPDFが生成されます。
※ コマンドの -fill オプションを外せば、黒文字で出力できます。
今回は出力データを手動で作成しましたが、実際にシステムを構築する場合は以下のようなフローになると思われます。
次回は印刷用元データを楽に作成する方法について提案します。
ラズパイの3.5インチLCDに画像表示を行います。
jinja2を使って、JSONファイルをImagemagick用データに変換します。
Imagegagick を使って、業務に耐えうるレベルのPDF帳票を作成します。