はじめに
バーコードは、簡単にかつ一瞬で情報を読み取ることができる便利なツールとして、今やあらゆる産業分野で使用されています。しかも、商品や製品だけでなく、振込用紙や携帯サイトのURL表示など、生活関連情報の分野にまで広く浸透してきています。
しかし、「このバーコードを作成するにはどうすればいいのだろう。かなり複雑なのかな?」と考えていたら、バーコード作成機能をJavaプログラムに組み込むことができる便利なコンポーネント「JBarCode 2.5J」を見つけました。
今回は、このJBarCode 2.5Jを使ってバーコードを生成するJavaアプリケーションを作成してみました。


対象読者
- Java、Swingコンポーネント、Eclipseを使って、Servlet・Applet・スタンドアロンアプリケーションを作ったことのある人
必要な環境
- 32bitバージョン JavaVM、JDK 1.4.2/5.0/6.0、
- 64bitバージョン JavaVM(Sun製Windows x64 VMのみサポート)、JDK 5.0/6.0
- Eclipse 3.0以降
なお、本プログラムは以下の環境で作成し動作確認を行っています。
- Windows Vista Service Pack2
- jdk 1.6.0_05
- Eclipse 3.1.1
コンポーネントのインストール
はじめてJBarCode 2.5Jを使用する方は、使用しているコンピュータにJBarCode 2.5Jをインストールする必要があります。
インストーラは、グレープシティのWebページからダウンロードできます。製品ページの[申込フォーム]をクリックし、グレープシティのWebサイトへ必要情報を登録すると、添付トライアルライセンスキーファイルとダウンロードサイトを記載したE-Mailが送られてきますので、ここからダウンロードします。ファイルはLZH形式で圧縮されており、解凍してインストーラを起動します。
制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。
サンプルコードの実行について
本稿のサンプルアプリケーションは、次のような手順で実行可能です。
- サンプルファイルをEclipseのプロジェクトにインポートする
- プロジェクトのプロパティを開き、[Javaのビルド・パス]を選んで[ライブラリー]タブをクリックし、既に登録されている「jbarcode.jar」を削除する
- [外部JARの追加]ボタンを押して、サンプルファイルに同梱してある「jbarcode.jar」ファイルを選択する
- プロパティウィンドウを閉じて、Eclipseの実行ボタンをクリックする
JBarCode 2.5Jについて
JBarCodeは、21種類のバーコード画像を簡単に作成できるJava専用のバーコードコンポーネントで、JavaアプリケーションやServletに組み込んで使うことができます。
バーコードの規格に関する詳しい知識がなくても、作成したいバーコードの種類とデータを指定するだけで、簡単にバーコードイメージを生成できます。バーコードの作成は、コードからクラスとメンバを使って生成できるのはもちろん、専用のデザイナを使用して視覚的にバーコードを作成し、その生成コードをJavaのソースファイルにコピーして使うこともできます。

JBarCodeを使うと、わずか数行のコードを記述するだけでバーコードの表示機能を実装できます。バーコードデザイナを使えば、より簡単にバーコードの各種設定の調整をコーディングレスで行うことも可能です。
また、高精度なバーコードを実現する多くの機能を持っており、バーコードサイズや色の変更に加え、テキストの表示と非表示の切り替え、表示位置、値のフォント指定、回転など、外観の調整も容易です。出力するバーコードの解像度変更やチェックデジット自動付加機能により、常に高精度で信頼性の高いバーコードを生成できます。
作成したバーコードは、JavaのImageオブジェクトとして作成できるとともに、PNGとJPEGの画像イメージをファイルとストリームに出力させることもできます。
JBarCodeコンポーネントは、JavaのServlet、JSPスクリプトレット、JSPカスタムタグ、スタンドアロンJavaアプリケーションに組み込んで使うことができるので、多彩なプログラムにバーコード作成機能を実装して使うことができます。
作成できるバーコードの種類
- QRコード
- PDF417
- CODE39
- CODE49
- CODE93
- CODE128
- JAN8
- JAN13
- GS1-128(旧称UCC/EAN-128)
- コンビニバーコード
- ITF
- POSTNET
- UPC/A
- UPC/E
- UPC/Eアドオン
- NW-7(CODABAR)
- カスタマバーコード(郵便バーコード)
- GS1 DataBar Omnidirectional
- GS1 DataBar Stacked Omnidirectional
- GS1 DataBar Expanded
- GS1 DataBar Expanded Stacked
バーコード作成の主な機能
- サイズ(高さ、幅)
- 色(バーコード、バーコード背景)
- 値(表示のON/OFF、フォント指定)
- 値の表示位置(中央、等間隔、左、右)
- 解像度指定
- チェックデジットの付加
- バー幅の変更
- バーコード種固有のオプション(CODE128、CODE39、CODE49、ITF、NW-7、PDF417、POSTNET、QRコード、UPC)
- クワイエットゾーンサイズの指定(右、左)
- バーコード回転(90度、180度、270度)
Javaアプリケーションの作成
今回はEclipseを使用して、バーコードを生成するJavaスタンドアロンアプリケーションを作成してみます。
Javaプロジェクトの作成
プロジェクトは、通常のJavaアプリケーションを作成するプロジェクトを用意します。この際、ライブラリーにJBarCode 2.5JのJARファイルを指定しておきます。この指定を行わないと、クラスのインポートができません。プロジェクト名は「myjbarcode1」にします。
- 新規Javaプロジェクト作成の2番目の画面で、[ライブラリー]タブをクリックし、[外部JARの追加]ボタンを押します。
- JBarCode 2.5Jをインストールしたフォルダの中にある「lib」フォルダの「jbarcode.jar」ファイルを指定します。これで、JBarCode 2.5Jをプロジェクトで使用できるようになります。
Javaプログラムの作成
今回は、プログラムを起動するとバーコードを作成する、簡単なプログラムを作りながら、実際にJBarCodeのコンポーネントを使ってみます。
プログラムはSwingコンポーネントを使用し、Windowsアプリケーションに仕上げます。GUIはパネルとボタンで構成し、数字8桁のバーコードとWebサイトのURLをQRコードにした2つのバーコードを作成します。作成したバーコードは、JavaのImageコンポーネントとしてボタンとともにパネルにレイアウトします。

クラスの作成
作成するクラスは、「jbarcode1」です。GUIなので、swingパッケージをインポートするとともに、JBarCodeコンポーネントが使えるように2つのパッケージをインポートします。
また、バーコード作成には直接関係ありませんが、ボタンを押すとプログラムを終了するようにしますので、ボタンのイベント関係のパッケージもインポートします。
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import com.grapecity.barcode.BarCode;
import com.grapecity.barcode.valuetype.*;
public class jbarcode1 {
また、mainメソッドでフレームのセットアップをします。ここでは、パネル「JPanel」から派生させたクラス「barcodePanel」のコンストラクタでバーコードを作成しますので、このパネルをフレームに組み込んでおきます。
public static void main(String[] args) {
//Frame のセットアップ
JFrame frame = new JFrame("jbarcode");
barcodePanel panel1 = new barcodePanel();
Container cont = frame.getContentPane();
//cont.setLayout(new FlowLayout());
cont.add(panel1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(0, 0, 250, 150);
frame.setVisible(true);
}
}
バーコード生成機能の作成
パネル「JPanel」から派生させたクラス「barcodePanel」のコンストラクタで、2つのバーコードを生成します。1つは通常のバーコードで8桁の数字をバーコード化します。もう1つはQRコードで、JBarCode 2.5Jの製品ページへのURLをQRコード化します。バーコードの元データは、あらかじめコードに組み込んでおきます。
まずはじめに、8桁の数字をバーコード化します。BarCodeクラスのコンストラクタでBarCodeオブジェクトを作成します。コンストラクタの引数を指定しない場合、空のBarCodeオブジェクトを作成します。引数にあらかじめ作成するバーコードのタイプを指定することもできます。
次に、setTypeプロパティで作成するバーコードのタイプを、Typeクラスのメンバフィールドで指定します。ここでは、8桁の数字をバーコード化しますので「JAN8」を指定します。そして、setValueプロパティでバーコードにする元データを指定します。
class barcodePanel extends JPanel implements ActionListener{
JButton button1;
private static final long serialVersionUID = 1L;
// 8桁のバーコード作成の場合
barcodePanel() {
BarCode barcode = new BarCode();
barcode.setType(Type.JAN8);
barcode.setValue("1234567");
バーコードの場合は、バーの下に元データや文字などを表示できますので、この機能も使ってみます。
バーの下に文字列を表示するには、setMessageShowメソッドを使用します。引数は論理値となっており、「true」に設定することで表示します。また、表示文字列はsetMessageStringメソッドを使用します。setMessageFontメソッドを使用して、表示文字列のフォントやスタイル、文字サイズを指定できます。setImageAlignmentメソッドはバーコードの表示位置を設定するメソッドですが、スタンドアロンGUIアプリケーションの場合でのみ有効なメソッドで、表示位置をImageAlignmentクラスのメンバフィールドで指定します。
// 各種プロパティの設定
barcode.setMessageShow(true);
barcode.setMessageString("1234567");
barcode.setMessageFont(new Font("arial", Font.PLAIN, 12));
barcode.setImageAlignment(ImageAlignment.CenterCenter);
バーコードの生成はたったこれだけです。後は、このBarCodeオブジェクトをパネルに組み込むだけです。
this.setLayout(new FlowLayout()); this.add(barcode);
QRコード生成機能の作成
QRコード生成処理も、基本的にはバーコード生成と同じです。ただし、コードの下に文字列は表示できません。
まず、BarCodeクラスのコンストラクタでBarCodeオブジェクトを作成し、setTypeプロパティにTypeクラスのメンバフィールド「QRCode」を指定します。そして、setValueプロパティでバーコードにする元データのURLを指定します。
このQRコードは、携帯電話のバーコードリーダーアプリでも読めるように、少しサイズを大きくします。これは、setBarSizeメソッドを使用します。引数はBarSizeクラスで、コンストラクタを使用して幅と高さを設定します。コンストラクタの引数には、幅と高さを単位付けた文字列で指定します。ここでは、サイズをそれぞれ100ピクセルに指定しています。
これで、QRコードはできあがりです。バーコードと同様パネルに組み込んで完成です。
//QRコード作成の場合
BarCode barcode2 = new BarCode();
barcode2.setType(Type.QRCode);
barcode2.setValue("http://www.grapecity.com/japan/java/jbarcode/");
barcode2.setBarSize(new BarSize("100px, 100px"));
this.add(barcode2);
デザイナの使用
バーコードのデザインでは、コードから作成する以外に、専用のデザイナを使うことができます。
JBarCode 2.5Jをインストールすると、Windowsのスタートメニューに「バーコードデザイナ」というメニューが追加されています。これをクリックするとデザイナが起動します。
デザイナでは、バーコードのタイプや設定値、DPI、色、メッセージ文字列など、バーコード生成に必要なすべての設定を行うことができます。また、値を変更するたびにプレビューが更新され、設定結果を確認できるようになっています。
デザイン結果は、[ファイル-ソースコード出力]メニューを選ぶと、それぞれ組み込むプログラムごとのコードをファイルで、[ファイル-画像形式]メニューを選ぶと画像ファイルで取得できます。

import com.grapecity.barcode.BarCode;
import com.grapecity.barcode.valuetype.*;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JFrame;
public class jbar {
public static void main(String args[]) {
BarCode barcode = new BarCode();
barcode.setType(Type.QRCode);
barcode.setValue("12345");
try{
barcode.setValueEncode("shift_jis");
}catch(java.io.UnsupportedEncodingException e){
e.printStackTrace();
}
barcode.setBarSize(new BarSize("87px, 87px"));
barcode.setMessageFont(new Font("Dialog", Font.PLAIN, 12));
barcode.setForeColor(new Color(0xcc00cc));
barcode.setBackColor(new Color(0x000033));
barcode.setOption(new OptionQRCode(OptionQRCode.Model2, OptionQRCode.ErrorLevel_L, -1, OptionQRCode.MaskAuto));
JFrame frame = new JFrame();
frame.getContentPane().add(barcode);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setSize(new java.awt.Dimension(300, 300));
frame.setVisible(true);
}
}
import com.grapecity.barcode.BarCode;
import com.grapecity.barcode.valuetype.*;
import java.awt.Color;
import java.awt.Font;
import javax.servlet.*;
import javax.servlet.http.*;
public class serv extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response) {
try{
BarCode barcode = new BarCode();
barcode.setType(Type.QRCode);
barcode.setValue("12345");
barcode.setValueEncode("shift_jis");
barcode.setBarSize(new BarSize("87px, 87px"));
barcode.setMessageFont(new Font("Dialog", Font.PLAIN, 12));
barcode.setForeColor(new Color(0xcc00cc));
barcode.setBackColor(new Color(0x000033));
barcode.setOption(new OptionQRCode(OptionQRCode.Model2, OptionQRCode.ErrorLevel_L, -1, OptionQRCode.MaskAuto));
ServletOutputStream out = response.getOutputStream();
barcode.saveImage(out, BarCode.PNG);
}catch(Exception e){
e.printStackTrace();
}
}
}
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import = "com.grapecity.barcode.BarCode"%>
<%@ page import = "com.grapecity.barcode.valuetype.*"%>
<%@ page import = "java.awt.Color"%>
<%@ page import = "java.awt.Font"%>
<%
BarCode barcode = new BarCode();
barcode.setType(Type.QRCode);
barcode.setValue("12345");
barcode.setValueEncode("shift_jis");
barcode.setBarSize(new BarSize("87px, 87px"));
barcode.setMessageFont(new java.awt.Font("Dialog", Font.PLAIN, 12));
barcode.setForeColor(new Color(0xcc00cc));
barcode.setBackColor(new Color(0x000033));
barcode.setOption(new OptionQRCode(OptionQRCode.Model2, OptionQRCode.ErrorLevel_L, -1, OptionQRCode.MaskAuto));
String filename = new java.util.Date().getTime() + ".png";
barcode.saveImage(application.getRealPath("/") + filename, BarCode.PNG);
%>
<html><body>
<img src="<%=filename%>" />
</body></html>
まとめ
JBarCode 2.5Jは、このようにとても簡単にバーコードを作成できます。
こうした機能を一から作るとなると、バーコードの規格から仕様までバーコードに関する専門の知識を必要としますが、JBarCode 2.5Jを使えば誰でも手軽にバーコード生成機能をプログラムに実装できるので、開発工数をぐっと縮めることができます。





