Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

バーコードを作成するJavaクライアントアプリケーションを作る

JBarCode 2.5Jのバーコード生成機能を使う

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/08/27 14:00

 バーコードは、簡単にかつ一瞬で情報を読み取ることができる便利なツールとして、今やあらゆる産業分野で使用されています。今回は、バーコード作成機能をJavaプログラムに組み込むことができる便利なコンポーネント「JBarCode 2.5J」を使って、バーコードを生成するJavaアプリケーションを作成してみました。

はじめに

 バーコードは、簡単にかつ一瞬で情報を読み取ることができる便利なツールとして、今やあらゆる産業分野で使用されています。しかも、商品や製品だけでなく、振込用紙や携帯サイトのURL表示など、生活関連情報の分野にまで広く浸透してきています。

 しかし、「このバーコードを作成するにはどうすればいいのだろう。かなり複雑なのかな?」と考えていたら、バーコード作成機能をJavaプログラムに組み込むことができる便利なコンポーネント「JBarCode 2.5J」を見つけました。

 今回は、このJBarCode 2.5Jを使ってバーコードを生成するJavaアプリケーションを作成してみました。

バーコードをイメージ画像形式で作成
バーコードをイメージ画像形式で作成
QRコードはちゃんと携帯のアプリで読み取れる
QRコードはちゃんと携帯のアプリで読み取れる
専用デザイナを使ってデザイン
専用デザイナを使ってデザイン

対象読者

  • 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形式で圧縮されており、解凍してインストーラを起動します。

 制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。

サンプルコードの実行について

 本稿のサンプルアプリケーションは、次のような手順で実行可能です。

  1. サンプルファイルをEclipseのプロジェクトにインポートする
  2. プロジェクトのプロパティを開き、[Javaのビルド・パス]を選んで[ライブラリー]タブをクリックし、既に登録されている「jbarcode.jar」を削除する
  3. [外部JARの追加]ボタンを押して、サンプルファイルに同梱してある「jbarcode.jar」ファイルを選択する
  4. プロパティウィンドウを閉じて、Eclipseの実行ボタンをクリックする

JBarCode 2.5Jについて

 JBarCodeは、21種類のバーコード画像を簡単に作成できるJava専用のバーコードコンポーネントで、JavaアプリケーションやServletに組み込んで使うことができます。

 バーコードの規格に関する詳しい知識がなくても、作成したいバーコードの種類とデータを指定するだけで、簡単にバーコードイメージを生成できます。バーコードの作成は、コードからクラスとメンバを使って生成できるのはもちろん、専用のデザイナを使用して視覚的にバーコードを作成し、その生成コードをJavaのソースファイルにコピーして使うこともできます。

バーコード作成のイメージ(※ヘルプファイルより抜粋)
バーコード作成のイメージ(※ヘルプファイルより抜粋)
GS1データバー、携帯電話とともに普及したQRコード、公共料金の支払いで便利なコンビニバーコードなど21種類のバーコード規格に対応(※ヘルプファイルより抜粋)
GS1データバー、携帯電話とともに普及したQRコード、公共料金の支払いで便利なコンビニバーコードなど21種類のバーコード規格に対応(※ヘルプファイルより抜粋)

 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」にします。

  1. 新規Javaプロジェクト作成の2番目の画面で、[ライブラリー]タブをクリックし、[外部JARの追加]ボタンを押します。
  2. JBarCode 2.5Jをインストールしたフォルダの中にある「lib」フォルダの「jbarcode.jar」ファイルを指定します。これで、JBarCode 2.5Jをプロジェクトで使用できるようになります。
ライブラリーにJBarCode 2.5JのJARファイルを指定する
ライブラリーにJBarCode 2.5JのJARファイルを指定する

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、色、メッセージ文字列など、バーコード生成に必要なすべての設定を行うことができます。また、値を変更するたびにプレビューが更新され、設定結果を確認できるようになっています。

デザイナでの設定
デザイナでの設定

 デザイン結果は、[ファイル-ソースコード出力]メニューを選ぶと、それぞれ組み込むプログラムごとのコードをファイルで、[ファイル-画像形式]メニューを選ぶと画像ファイルで取得できます。

出力するコードの形式を選ぶ
出力するコードの形式を選ぶ
出力されたJavaアプリケーション用コード
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);
    }
}
Servlet用コード
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();
        }
    }
}
JSPスクリプトレット用コード
<%@ 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を使えば誰でも手軽にバーコード生成機能をプログラムに実装できるので、開発工数をぐっと縮めることができます。

製品情報

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

    8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5