Imagegagick

05. ImageMagick で帳票作成 (実践編)

2017/07/24 -- Posted by : bitset

前回でImageMagickの基本操作を説明したので、今回は帳票作成について説明します。

ImageMagick を使った帳票作成のフローは以下のようになります。
 

flow.png

icon_red_ball_24.png テンプレートファイル

帳票のテンプレートです。罫線や固定文字列はあらかじめテンプレートで作成しておきます。
テンプレートはPNG形式がお勧めです。 テンプレートにPDFを使うと、変換時に劣化が発生します。 -qualityオプションで品質を上げることも出来ますが処理時間が長くなります。
そのため 入力はPNG、出力は PDF が効率が良いです。

icon_red_ball_24.png 出力データ

帳票に印字する文字列の集合です。

icon_red_ball_24.png PDF

出来上がった帳票です。

 

-drawオプション

帳票作成で肝になるのが -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)の位置に出力します。

(出力結果)

output-1.png

 

-drawオプションの引数にファイル名を指定することができます。(@ファイル名)

$ convert  -font Ricty-Diminished-Regular -draw @input.txt  template.png output.pdf

ファイルの中には複数のコマンドを記述できます。

text 30,30 '(30,30)日本語 #1'
text 50,50 '(50,50)日本語 #2'
text 70,70 '(70,70)日本語 #3'
line 20,100 300,100
stroke red
fill-opacity 0
rectangle  20,130 300,180 

(出力結果)

output-2.png

 

線や矩形、楕円などの図形を書いたり、画像を貼り付けたり、いろいろなことが可能です。

# 文字 (#始まりはコメント)
text 50,50 '日本語 #1'

# 文字(サイズ指定)
font-size 24 text 80,80 '日本語 #2'

# 文字(サイズ、色指定)
fill magenta font-size 32 text 120,120 '日本語 #3'

# 線を引く
stroke blue
fill blue
fill-opacity 100
line 30,20, 300,20

# 矩形
stroke red
fill-opacity 0
rectangle 115,90 270,130

# 画像を貼り付ける
image over 100,100 0,0 'bitset.png'

(出力結果)

output-3.png

 

帳票作成

テンプレートファイルとdrawオプションを組み合わせて帳票作成を作成してみます。

icon_red_ball_24.png テンプレート

使用するテンプレートはコレです。 税務署からPDF形式でダウンロードできるので、GIMP等でPNG形式に変換します。

template.png

 

icon_red_ball_24.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が生成されます。

output-4.png

※ コマンドの -fill オプションを外せば、黒文字で出力できます。

 

今回は出力データを手動で作成しましたが、実際にシステムを構築する場合は以下のようなフローになると思われます。

flow-2.png

次回は印刷用元データを楽に作成する方法について提案します。

Share:

Most Recent Posts

07. ラズパイでフレームバッファ #1

ラズパイの3.5インチLCDに画像表示を行います。

06. ImageMagick で帳票作成 (データ作成編)

jinja2を使って、JSONファイルをImagemagick用データに変換します。

05. ImageMagick で帳票作成 (実践編)

Imagegagick を使って、業務に耐えうるレベルのPDF帳票を作成します。