Imagemagick

04. ImageMagick で帳票作成 (準備編)

2017/07/24 -- Posted by : bitset

概要

ImageMagick を使ったPDF帳票方法を説明します。

この方法を使うと以下のメリットがあります。

1. ShellScriptで帳票作成ができる。

帳票作成ライブラリ/フレームワーク不要になり、システムが身軽になります。

帳票サーバが不要で、ターミナル上で実行可能なので動作検証・デバッグが楽です。

2. 並列処理しやすく、高速な帳票作成が可能。

xargsコマンドで並列化することでCPUコアの数だけ高速化出来ます。

ImageMagickのconvertコマンドを実行するだけなので、並列化が容易です。

 

ImageMagickが多機能なため2回に分け、今回は convertコマンドの使い方を説明し、
次回でPDF帳票を作成します。

 

準備

Imagemagick をインストールするだけです。 

Ubuntu Linuxの場合、パッケージからインストールできます。

$ sudo apt install imagemagick

必要に応じて、日本語フォントを追加インストールします。

(例:Rictyフォントをインストール)

$ sudo apt install fonts-ricty-diminished

 

使ってみる

まずは簡単な出力を試してみます。

$ convert -font Ricty-Diminished-Regular label:日本語  output.png

引数の最後に指定したファイルに結果画像が出力されます。

(出力結果)
output-1.png

... これだけだと小さくて寂しいですが、以降オプションを増やして見栄えを良くしていきます。

 

icon_red_ball_24.png 画像フォーマット

拡張子を png の代わりに pdf を指定すると PDFファイルが作成されます。 他にも jpg, gif, tiff, bmp, ps(PostScript), ... 等、多くの画像フォーマットを指定出来ます。 画像の種類は拡張子で自動的に判断されます。

対応している画像フォーマットは -list format オプションで確認できます。

$ convert -list format

   Format  Module    Mode  Description
-------------------------------------------------------------------------------
      3FR  DNG       r--   Hasselblad CFV/H3D39II
      AAI* AAI       rw+   AAI Dune image
       AI  PDF       rw-   Adobe Illustrator CS2
      ART* ART       rw-   PFS: 1st Publisher Clip Art
      ARW  DNG       r--   Sony Alpha Raw Image Format
      AVI  MPEG      r--   Microsoft Audio/Visual Interleaved
      AVS* AVS       rw+   AVS X image
...

icon_red_ball_24.png 色指定

文字と背景色を指定できます。

  • -fill 文字の色
  • -background 背景色

指定できる色は -list color オプションで確認できます。

$ convert -list color

Path: [built-in]

Name                  Color                                         Compliance
-------------------------------------------------------------------------------
AliceBlue             srgb(240,248,255)                             SVG X11 XPM 
AntiqueWhite          srgb(250,235,215)                             SVG X11 XPM 
AntiqueWhite1         srgb(255,239,219)                             X11 
AntiqueWhite2         srgb(238,223,204)                             X11 
AntiqueWhite3         srgb(205,192,176)                             X11 
...

icon_red_ball_24.png フォント指定

-font でフォント指定できます。
フォントの一覧も -list font オプションで確認できます。

$ convert -list font

Path: /etc/ImageMagick-6/type-ghostscript.xml
  Font: AvantGarde-Book
    family: AvantGarde
    style: Normal
    stretch: Normal
    weight: 400
    glyphs: /usr/share/fonts/type1/gsfonts/a010013l.pfb
  Font: AvantGarde-BookOblique
    ...

Path: System Fonts
  ...
  Font: Ricty-Diminished-Bold  
    family: Ricty Diminished
    style: Normal
    stretch: Normal
    weight: 700
    glyphs: /usr/share/fonts/truetype/ricty-diminished/RictyDiminished-Bold.ttf

Font: の行に出力されているフォント名が指定できます。

一覧に出てこないフォントを使用したい場合、-font の後にフォントファイルへのパスを指定します。

$ convert  -font "$HOME/fonts/RictyDiminished-Regular.ttf"  label:日本語  output.png
 

icon_red_ball_24.png 出力文字列指定

ここまでの例では label: オプションで出力文字列を指定しましたが、他のオプションもあります。

label:

シンプルな1行単位の文字列出力です。

http://www.imagemagick.org/Usage/text/#label

caption:

ワードラップに対応した出力していです。( -sizeオプションで幅を指定しないと label と同じ)

http://www.imagemagick.org/Usage/text/#caption

pango:

マークアップ指定出来るようですが、残念ながら手元の ImageMagic 6.8.9-9 ではエラーになりました。 (今後の宿題)​

http:// http://www.imagemagick.org/Usage/text/#pango
 

その他のオプション

convertコマンドには上記以外にも多数のオプションがあります。

https://www.imagemagick.org/script/convert.php

帳票作成に関係するオプションを挙げていきます。

 

icon_red_ball_24.png 文字サイズ指定

-pointsize 文字サイズ

https://www.imagemagick.org/script/command-line-options.php#pointsize

$ convert  -font Ricty-Diminished-Regular -pointsize 64 label:日本語 output.png

(結果)

output-2.png

最初の出力より文字が大きくなりました。

 

icon_red_ball_24.png キャンバス(画像)サイズ指定

-size WxH (幅x高)

https://www.imagemagick.org/script/command-line-options.php#size

$ convert  -font Ricty-Diminished-Regular -size 640x320 label:日本語 output.png

output-3.png

 

横幅だけを指定すると、横幅に合わせてフォントサイズを調整し、キャンバスの高さは自動調整してくれます。

$ convert -font Ricty-Diminished-Regular -size 640 label:日本語 output.png

output-4.png

 

icon_red_ball_24.png ページサイズ指定

- page

https://www.imagemagick.org/script/command-line-options.php#page

PDFのみ利用可能です。A0〜A10, B0〜B5, Letter 等が指定できます。

$ convert  -font Ricty-Diminished-Regular -page a4  -pointsize 128 caption:日本語 output.pdf

output-5.png

 

icon_red_ball_24.png アノテーション

- append

http://www.imagemagick.org/Usage/annotating/

既存の画像ファイルの上に文字列を出力します。

$ convert template.png  -font Ricty-Diminished-Regular -pointsize 64 label:"日本語"  -append  output.png

    template.pngという画像ファイル上に、64ptの文字列を描画し、output.png に出力しています。

(template.png)

template.png

(結果)

output-6.png

 

gravityオプションで出力位置を指定できます。

$ convert template.png  -font Ricty-Diminished-Regular -pointsize 64 label:"日本語"  -gravity Center -append  output.png

output-7.png

 

icon_red_ball_24.png その他の使用例

ここに挙げたもの以外にも、公式サイトにに詳細な使用例が記載されています。

(Examples of ImageMagick Usage)

    https://www.imagemagick.org/Usage/

 

今回はここまで。次回はアノテーションと -draw オプションを駆使してImagemagickで帳票作成を行います。

 

Share:

Most Recent Posts

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

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

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

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

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

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