はじめに
バーコードは、簡単にかつ一瞬で情報を読み取ることができる便利なツールとして、今やあらゆる産業分野で使用されています。しかも、商品や製品だけでなく、振込用紙や携帯サイトの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を使えば誰でも手軽にバーコード生成機能をプログラムに実装できるので、開発工数をぐっと縮めることができます。