本連載では Java でバーコードを生成/操作するライブラリ ZXing について解説しています。 前回は ZXing の概要について解説しました。 今回は ZXing を使ってITFバーコードを生成するためのサンプルプログラムを示したいと思います。
ITFバーコードを生成するプログラム
今回は ITF と呼ばれるバーコードを生成してみましょう。 ITF バーコードは、日本の流通で使われているもので、皆さんの身の回りに溢れているとても身近なものです。 標準は14桁の ITF-14 というもので、16桁に拡張したバージョンの ITF-16 というもの等があります。
今回のサンプルプログラムで生成されるバーコードは下図のようなものです。
それではさっそくサンプルプログラムを見ていきます。
package sample.zxing;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.oned.ITFWriter;
public class Main {
public static void main(String args[]) {
try {
String contents = "12345678901231";
BarcodeFormat format = BarcodeFormat.ITF;
int width = 200;
int height = 50;
ITFWriter writer = new ITFWriter();
BitMatrix bitMatrix = writer.encode(contents, format, width, height);
BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
ImageIO.write(image, "png", new File("barcode.png"));
}
catch( IOException e ) {
e.printStackTrace();
}
catch (WriterException e) {
e.printStackTrace();
}
}
}
上のプログラムで重要なのは、 try で囲まれた実質8行だけです。 最初の4行と後の4行をそれぞれ解説します。
最初の4行は次のようになっています。
String contents = "12345678901231";
BarcodeFormat format = BarcodeFormat.ITF;
int width = 200;
int height = 50;
変数名からなんとなく意味が分かると思いますが、 contents はバーコードで表したい内容です。 ここでは “12345678901231” という数字列をバーコードで表現します。 尚、ITF-14 のコードは14桁で更に14文字目はチェックデジットとなる数値である必要があります。 なので “1234567890123” という13文字から算出したチェックデジットが、14桁目の “1” ということになります。
format は生成するバーコードの種類を、width は生成するバーコードの幅、height は生成するバーコードの高さを宣言しています。
後半の4行は次のようになっています。
ITFWriter writer = new ITFWriter();
BitMatrix bitMatrix = writer.encode(contents, format, width, height);
BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
ImageIO.write(image, "png", new File("barcode.png"));
ITFバーコードを出力するためのクラス ITFWriter をインスタンス化して、上で宣言した変数を encode メソッドに指定してビットマトリックスを生成しています。
あとは生成したバーコードのビットマトリックスを画像ファイル “barcode.png” として PNG 形式で保存したいため、ImageIO を利用してファイルに出力しています。
ITF-16 バーコードの出力
上記では ITF-14 のバーコードを出力しましたが、同様に ITF-16 のバーコードを出力することも可能です。 指定する contents を16文字で指定すればOKです。 尚、ITFWriterそのもののソースコードを覗いてみると80桁までであれば生成が可能のようです。(但し2の倍数の桁数である必要がある)
おわりに
今回はバーコードを生成するサンプルプログラムを示しました。 ZXing を利用してバーコードを生成する雰囲気を掴んで頂けたでしょうか? 次回は二次元バーコードであるQRコードの生成について解説します。
更新履歴
- 2014年07月12日 – 初稿を投稿しました。
- 2014年08月29日 – ITFバーコードの種類に触れるように本文を若干修正しました。