Home > その他のドキュメント
その他のドキュメント
Barcode4J バーコードXMLフォーマット
イントロダクション
このページでは、Barcode4Jで使われている、バーコード定義用のXMLフォーマットについて解説する。また、各種バーコードによってサポートされるメッセージフォーマットについての注釈も記載する。
構文
訳注:原文では名前空間なしのXML構文で書かれていますが、この翻訳では全て名前空間ありの記述としました。Copper PDFや、XSLT等の一般的なXMLアプリケーションでBarcode4Jを使う場合は名前空間が必要です。この翻訳では、名前空間の接頭辞は”bc”としていますが、これは任意に変えられます。
バーコードXMLフォーマットの構文は次の通り:
<bc:barcode xmlns:bc="http://barcode4j.krysalis.org/ns"
message="200123456789">
<bc:{type}>
{バーコード個別の設定}
</bc:{type}>
</bc:barcode>
「ean13」や「code39」のようなバーコードタイプ名で{type}を書き換えること。また、「org.krysalis.barcode4j.impl.Code39」のような実装クラスの省略無しのクラス名を使うことも出来る。もし、ある名前を使う場合、BarcodeClassResolverインターフェイスを使って内部的に解決される。
{バーコード個別の設定}は、そのバーコードの実装によって定義された一連のエレメントと属性値になる。詳しくは、このページの下部を参照して欲しいが、一例としてあげると:
<bc:barcode xmlns:bc="http://barcode4j.krysalis.org/ns">
<bc:intl2of5>
<bc:height>10mm</bc:height>
<bc:wide-factor>2.5</bc:wide-factor>
</bc:intl2of5>
</bc:barcode>
データ型
設定要素の値は様々なデータ型から構成される:
- {boolean}: 値は(true|yes|on)か(false|no|off)
- {string}: 「hello123」のような簡単なユニコードの文字列
- {char}: ユニコード文字
- {number}: 「2.43」や「5」などの数字
- {unit}: 長さの単位、mm、cm、ptのどれか
- デフォルトの単位は通常mm(ミリメーター)だが、処理系次第
- 特定の場でサポートされている特殊な単位にmw(モジュール幅)がある。
これは、クワイエットゾーンなどで「モジュール幅の10倍」といった値を特定の1Dバーコードで指定するために使われる。
- {length}: 「{number}[[ ]{unit}」という形式での長さ:例:1.2mm, 5.0, 3, or 10mw.
- {checksum-mode}:チェックサムの動作を決定する。
取りえる値は(全ての値が全てのバーコードフォーマットでサポートされているわけではない。):- add:チェックサムが自動的にメッセージに追加される
- check:バーコードのレンダリングの間、チェックサムは中断する
- ignore:チェックサムプロセスは行われない
- auto:バーコードタイプのデフォルトの動作を有効にする
- {human-readable-placement}:この列挙型はバーコードの可読部分の位置を決める。
- bottom:メッセージはコードシンボルの底部に置かれる
- top:メッセージはシンボルの上部に置かれる
- none:可読部分は生成されない
- {baseline-alignment}:この列挙型はPOSTNETのようなバーコードラインのアラインメントを決める。
- bottom:長短ラインは下ぞろえで配置される
- top:長短ラインは上ぞろえで配置される
- {font-name}:名前の通り、出力の際に使われるフォントの名前である。全ての出力フォーマットで全てのフォントが利用できるわけでは無いことに注意
- {shape}:この列挙型はDataMatrixバーコード用のシンボル設定の選択を決める
- force-none:正方形のシンボルも長方形のシンボルも両方許可される
- force-square:正方形シンボルの使用を強制する
- force-rectangle:長方形シンボルの使用を強制する
データ型はしばしば{}の形式で与えられる。データ型の後の値はデフォルトの値を意味する。
バーコードXMLフォーマット:省略形
次のcode39の例のように、バーコードXMLフォーマットは簡略化できる(結果、全てのデフォルトの値が使われる)。
<bc:barcode xmlns:bc="http://barcode4j.krysalis.org/ns" message="200123456789"> <bc:code39/> </bc:barcode>
このケースでは、デフォルト値を想定すれば、結果は事実上次のようになる:
<bc:barcode xmlns:bc="http://barcode4j.krysalis.org/ns"
message="200123456789">
<bc:code39>
<bc:height>15mm</bc:height>
<bc:module-width>0.19mm</bc:module-width>
<bc:wide-factor>2.5</bc:wide-factor>
<bc:interchar-gap-width>1mw</bc:interchar-gap-width>
<bc:quiet-zone enabled="true">10mw</bc:quiet-zone>
<bc:checksum>auto</bc:checksum>
<bc:human-readable>
<bc:placement>bottom</bc:placement>
<bc:font-name>Helvetica</bc:font-name>
<bc:font-size>8pt</bc:font-size>
<bc:pattern>{string}</bc:pattern> <!-- 詳細は後述 -->
<bc:display-start-stop>false</bc:display-start-stop>
<bc:display-checksum>false</bc:display-checksum>
</bc:human-readable>
</bc:code39>
</bc:barcode>
可読メッセージパターン
ジェネラル1Dコードは内部的な構造を持たない。その為、カスタムメッセージがコード化される場で使われる。大抵の場合、多数の桁のとても巨大な数値になる。グループ化しなければ読み取るのが非常に困難である。
あるいは切れ目の無い数字の集合としてコード化した日時を扱うことになる。
複雑で長いメッセージを簡単に読み取るようにするためには、パターンが必要である。可読メッセージにカスタムパターンを加える機能はあるが、それが適用できるのはInterleaves 2 of 5, Code 39, Code 128 and Codabarだけである。その他の種のバーコードは可読部分をもたないか、メッセージの特殊な書式設定が必要になる。(例:UPC・EAN)
パターンの中でアンダーラインは次のメッセージ文字のためのプレースホルダーとして使われる。パターン内の他の文字はメッセージシンボルの間に挿入される。バックスラッシュはエスケープシンボルである。’’の組み合わせは可読メッセージの’’を含み、’’はアンダーラインとバックスラッシュを含む任意の文字に置き換えられる。
例:
| バーコードメッセージ | 1234567890 | 01012001103854 | 1234567890 |
|---|---|---|---|
| 可読パターン | ____ ____ __ | __/__/____ __:__:__ UTC | ____\\___\____ |
| 可読メッセージ | 1234 5678 90 | 01/01/2001 10:38:54 UTC | 1234\567_890 |
サポートされている全てのシンボロジー(バーコードの種類)の設定詳細
訳注:JANコードはEAN-13, EAN-8, EAN-128と互換であるため、これをそのまま使用してください。Copper PDFは、ISBN, QRコードもサポートしています。ISBN, QRコードについてはこちらを参照してください。
- general 1D シンボロジー
- UPC/EAN グループ
- ポスタルシンボロジー
- 2Dシンボロジー
{バーコード個別の設定}
- Comments (Close): 0
- Trackbacks (Close): 0
Copper PDF バーコードプラグイン
このプラグインについて

Copper PDF 2.1.3 以降で、バーコード(QRコードを含む)の表示が可能になるプラグインです。
このプラグインには、
Barcode4J 2.0
http://barcode4j.sourceforge.net/
QRコードクラスライブラリ for Java ver. 0.50beta
http://www.swetake.com/qr/java/qr_java.html
を使用しています。
インストール方法
パッケージに含まれているcopper-pdf/pluginsの内容を、Copper PDFのpluginsディレクトリの中にコピーしてください。
(DEBまたはRPMパッケージ版のCopper PDFのpluginsディレクトリは/usr/share/copper-pdf/にあります。)
Copper PDFが動作中の場合、1分ほど待つか、再起動するとプラグインが読み込まれます。
基本的な使用方法
パッケージに含まれているサンプルHTMLコード(example.html)もご利用ください。
プラグインをインストールしたCopper PDFでは、HTML/XHTML中に記述された、http://barcode4j.krysalis.org/ns名前空間に属する要素がバーコードに置き換えられます。
例えば、以下の記述はEAN-13(JAN-13)形式のバーコード画像に置き換えられます。
<bc:barcode xmlns:bc="http://barcode4j.krysalis.org/ns" message="200123456789"> <bc:ean-13> <bc:height>15mm</bc:height> <bc:module-width>0.33mm</bc:module-width> <bc:quiet-zone enabled="true">10mw</bc:quiet-zone> <bc:checksum>add</bc:checksum> <bc:human-readable> <bc:placement>bottom</bc:placement> <bc:font-size>8pt</bc:font-size> </bc:human-readable> </bc:ean-13> </bc:barcode>
要素の記述方法(The Barcode XML format)は以下のページで解説されています。
(英語) http://barcode4j.sourceforge.net/2.0/barcode-xml.html
(日本語訳) http://copper-pdf.com/?p=905
このプラグインは、Barcode4Jがサポートする、全ての形式のバーコードを表示することが出来ます。
加えて、EAN-13(JAN-13)の変形として、日本国内で流通する図書のISBNを表記するためのバーコードと、QRコードをサポートしています。
CSSによるサイズ、色、フォントの指定
サイズを固定したい場合は、CSSによって指定することができます。
また、背景色と描画色は同様にbackground-color, colorによって指定します。
例えば、以下の例では幅が1cmに固定され、背景色がピンク、描画色が青となります。
<bc:barcode xmlns:bc="http://barcode4j.krysalis.org/ns" xmlns:html="http://www.w3.org/1999/xhtml" html:style="width: 1cm; background-color: Pink; color: Blue" message="エンコードする文字列"> <bc:qrcode/> </bc:barcode>
font-name要素による指定は無視されます。代わりに、CSSのfont-family, font-weight, font-styleが適用されます。
OCRBフォントの使用を推奨します。MS Officeに含まれているものや、以下のサイトで配布されているものがあります。
http://ansuz.sooke.bc.ca/software/ocrb.php
QRコードの表示方法
HTML中に次の記述をすることで、QRコードが表示されます。
<bc:barcode xmlns:bc="http://barcode4j.krysalis.org/ns" message="エンコードする文字列"> <bc:qrcode/> </bc:barcode>
qrcode要素には、次の要素を含むことが出来ます。
QRコードについては、以下のサイトもご参照ください。
http://www.denso-wave.com/qrcode/qrgene2.html
・version
QRコードのバージョンです。0から40の整数で指定します。0の場合は自動設定です。
デフォルトは0です。
・ecc
エラー訂正レベルです。L, M, Q, Hのいずれかを指定します。
デフォルトはMです。
・encmode
エンコードモードです。N(数字), M(英数字), B(8ビットバイト)のいずれかを指定します。
デフォルトはBです。
.module-width
セルの大きさです。単位はcm, mm, pt, inのいずれかを使用可能です。
デフォルトは0.25mmです。
.quiet-zone
上下左右のマージンです。単位はcm, mm, pt, in, mw(セルの大きさ)のいずれかを使用可能です。
デフォルトは1mwです。
例えば、以下の場合はバージョン10、エラー訂正レベルH、英数字モード、セルサイズ0.5mm、マージン1mmのQRコードを生成します。
<bc:barcode xmlns:bc="http://barcode4j.krysalis.org/ns" message="ENKODOSURUMOJIRETSU"> <bc:qrcode> <bc:version>10</bc:version> <bc:encmode>M</bc:quiet-zone> <bc:ecc>H</bc:shape> <bc:module-width>0.5mm</bc:module-width> <bc:quiet-zone enabled="true">2mw</bc:quiet-zone> </bc:qrcode> </bc:barcode>
ISBNコードについて
記述方法はEAN-13(JAN-13)の場合と同じです。
ただし、要素名ean-13を、isbnとしてください。
再配布条件
Copper PDF バーコードプラグインは自由に配布することができます。
付属のライブラリについては、
copper-pdf/plugins/avalon-framework.LICENSE.txt
copper-pdf/plugins/barcode4j.LICENSE.txt
copper-pdf/plugins/Qrcode.LICENSE.txt
をお読みください。
- Comments (Close): 0
- Trackbacks (Close): 0
Code 128
実例

構文
<bc:barcode message="0123456789"<
<bc:code128<
<bc:height<15mm</bc:height<
<bc:module-width<0.21mm</bc:module-width<
<bc:quiet-zone enabled="true"<10mw</bc:quiet-zone<
<bc:human-readable<
<bc:placement<bottom</bc:placement<
<bc:font-size<8pt</bc:font-size<
</bc:human-readable<
</bc:code128<
</bc:barcode<
メモ
- {height}は少なくともバーコードの長さの0.15倍か0.25インチ以上無ければならない
メッセージ書式
- 有効文字:全7ビットASCII(US-ASCII)文字セットがサポートされている
- ファンクション1から4までが使用可能であり、メッセージではASCII文字の0xF1 (241), 0xF2 (242), 0xF3 (243) and 0xF4 (244) としてコード化される。
- Comments (Close): 0
- Trackbacks (Close): 0
Codabar
実例

構文
<bc:barcode message="0123456789">
<bc:codabar>
<bc:height>15mm</bc:height>
<bc:module-width>0.21mm</bc:module-width>
<bc:wide-factor>3.0</bc:wide-factor>
<bc:quiet-zone enabled="true">10mw</bc:quiet-zone>
<bc:human-readable>
<bc:placement>bottom</bc:placement>
<bc:font-size>8pt</bc:font-size>
</bc:human-readable>
</bc:codabar>
</bc:barcode>
メモ
- 現在チェックサムは実装されていない
メッセージ書式
- 有効な文字は[0~9]と[- $ : / . +]
- 開始と終了文字は[a b c d e * n t]
- Comments (Close): 0
- Trackbacks (Close): 0
Interleaved 2 of 5
実例

構文
<bc:barcode message="0123456789">
<bc:intl2of5>
<bc:height>15mm</bc:height>
<bc:module-width>0.21mm</bc:module-width>
<bc:wide-factor>3.0</bc:wide-factor>
<bc:quiet-zone enabled="true">10mw</bc:quiet-zone>
<bc:checksum>ignore</bc:checksum>
<bc:human-readable>
<bc:placement>bottom</bc:placement>
<bc:font-size>8pt</bc:font-size>
<bc:display-checksum>false</bc:display-checksum>
</bc:human-readable>
</bc:intl2of5>
</bc:barcode>
メモ
- {height}は少なくともバーコードの長さの0.15倍か0.25インチのどちらか大きい値以上無ければならない
- {module-width}は少なくとも7.5ミル(1ミルは1000分の1インチ)か0.19ミリメートル以上必要である。
- もし、狭いエレメントが20ミル以上なら、広いエレメントは2倍から3倍の範囲に収める必要がある。もし、狭いエレメントが20ミル未満なら、倍率は2.2倍を超えなければならない。
- {quiet zone}は少なくともモジュール幅の10倍か0.25インチは無ければならない。
- {display-checksum}は計算されたチェックサムを可読領域に含めるかを決定する。
- このシンボロジーでは二つの文字が交互に配置されるので(一つはバーに、次は空白部分に置かれる)、読み取り機により返されるメッセージは常に偶数桁の数値になる。必要なら、0文字桁がデータの前に追加される。
メッセージ書式
有効な文字は[0~9]である。
- Comments (Close): 0
- Trackbacks (Close): 0
DataMatrix
実例
![]()
構文
<bc:barcode message="2012345">
<bc:datamatrix>
<bc:module-width>0.352777mm</bc:module-width> <!-- 1 pixel at 72dpi -->
<bc:quiet-zone enabled="true">1mw</bc:quiet-zone>
<bc:shape>force-none</bc:shape>
</bc:datamatrix>
</bc:barcode>
メモ
- このシンボロジーは可読領域を持たない。
- このアルゴリズムは常に可能な最も小さいシンボル配列を選択する。
- 構造的な付加機能はまだ実装されていない。
メッセージ書式
- 全てのISO-8859-1文字は有効なメッセージ文字である。
- 数字文字だけを使えばより小さいシンボルサイズに収められる。
- 現時点では、ECI機能は使用できない。ISO-8859-1エンコーディング文字だけが使用できる。
- 現時点では、FNC1と読み取り機のプログラミングシグナルはコード化できない。
- アップリケーションの中には
(グループ区分け文字)や (レコード区分け文字)のような特殊なASCII文字を使用するものがある。そのままバーコード4Jに送ってよい。Javaではそのようなアップリケーションのプリアンブル(”[)>RS05GS”)は”[)>\u001E05\u001D”.と表現される。同じデータがURLの一部としてエンコードされる(バーコードサーブレット使用時)と、”%5B%29%3E%1E05%1D”となる。
- Comments (Close): 0
- Trackbacks (Close): 0
PDF417
実例

構文
<bc:barcode message="2012345">
<bc:pdf417>
<bc:module-width>0.352777mm</bc:module-width> <!-- 1 pixel at 72dpi -->
<bc:row-height>3mw</bc:row-height>
<bc:columns>2</bc:columns>
<bc:min-columns>2</bc:min-columns>
<bc:max-columns>2</bc:max-columns>
<bc:min-rows>3</bc:min-rows>
<bc:max-rows>90</bc:max-rows>
<bc:ec-level>0</bc:ec-level>
<bc:quiet-zone enabled="true">2mw</bc:quiet-zone>
<bc:vertical-quiet-zone>2mw</bc:vertical-quiet-zone>
<bc:width-to-height-ratio>3.0</bc:width-to-height-ratio>
</bc:pdf417>
</bc:barcode>
メモ
- このシンボロジーは可読領域を持たない。
- {ec-level}はエラー修正レベルであり、0から8の間で無ければならない。
- {vertical-quiet-zone}が明示的に設定されない場合、{horizontal-quiet-zone}が設定されているのと同じことになる。
- メッセージのサイズによって、{columns}と{ec-level}は調整する必要があるかもしれない。起こりえるエラーのメッセージを注意深く読んでほしい。
- 代替方法として、{columns}セッティングを削除して、メッセージによってシンボルを伸び縮みさせられる{min/max-columns}と{min/max-rows}を扱っても良い。{width-to-height-ratio}を使って、シンボルの形をコントロールできる。(注:有効な行数は3から90の間に、有効な列数は1から30の間に設定しなければならない。)
- {columns}設定を使うと{min/max-columns}設定を無効にする。あるいは言い換えるなら、{columns}を設定すると{min-columns}と{max-columns}を同じ値に設定する。
- Macro PDF417 機能はまだ実装されていない。
- Compact PDF417 機能はまだ実装されていない。
メッセージ書式
- 印刷可能な全てのASCII文字は有効な文字である。
- バイトコンパクションモードは256の全ての取りえる8ビットのバイト値をコード化させられる。
- 数字文字だけを使えばより小さいシンボルサイズに収められる
- 現時点では、ECI機能は使用できない。全ての文字は”cp437″ (PC437)エンコーディングで翻訳される。
- Comments (Close): 0
- Trackbacks (Close): 0
USPS Intelligent Mail
実例
![]()
構文
<bc:barcode message="01234567094987654321012345678">
<bc:usps4cb>
<bc:module-width>0.02in</bc:module-width>
<bc:track-height>0.050in</bc:track-height>
<bc:ascender-height>0.050in</bc:ascender-height>
<bc:interchar-gap-width>0.025in</bc:interchar-gap-width>
<bc:quiet-zone enabled="true">10mw</bc:quiet-zone>
<bc:vertical-quiet-zone>0.028in</bc:vertical-quiet-zone>
<bc:bc:human-readable>
<bc:placement>bottom</bc:placement>
<bc:font-size>8pt</bc:font-size>
</bc:human-readable>
</bc:usps4cb>
</bc:barcode>
メモ
- 上記の設定値の有効範囲の情報に関してはこのシンボルの仕様詳細を参照していただきたい。
メッセージ書式
- 有効な文字は[0~9]
- コード処理の過程でその他の全ての文字は自動的に除去される。
リンク
- Comments (Close): 0
- Trackbacks (Close): 0
POSTNET
実例
![]()
構文
<bc:barcode message="2012345">
<bc:postnet>
<bc:height>15mm</bc:height>
<bc:module-width>0.02in</bc:module-width>
<bc:quiet-zone enabled="true">10mw</bc:quiet-zone>
<bc:checksum>ignore</bc:checksum>
<bc:interchar-gap-width>0.026in</bc:interchar-gap-width>
<bc:tall-bar-height>0.125in</bc:tall-bar-height>
<bc:short-bar-height>0.050in</bc:short-bar-height>
<bc:baseline-alignment>bottom</bc:baseline-alignment>
<bc:bc:human-readable>
<bc:placement>bottom</bc:placement>
<bc:font-size>8pt</bc:font-size>
<bc:display-checksum>false</bc:display-checksum>
</bc:human-readable>
</bc:postnet>
</bc:barcode>
メッセージ書式
- 有効な文字は[0~9]である
- {display-checksum}は計算されたチェックサムを可読領域に含めるかを決定する。
- Comments (Close): 0
- Trackbacks (Close): 0
EAN-128(JAN-128)
UCC/EAN-128, GS1-128としても知られている。
構文
<bc:barcode message="42012345ñ910112345678912345678ð">
<bc:ean-128>
<bc:height>15mm</bc:height>
<bc:module-width>0.21mm</bc:module-width>
<bc:check-digit-marker>ð</bc:check-digit-marker>
<bc:group-separator>ñ</bc:group-separator>
<bc:template>(420)n5(91)n2+n9+n2-8+cd0</bc:template>
<bc:quiet-zone enabled="true">10mw</bc:quiet-zone>
<bc:human-readable>
<bc:placement>bottom</bc:placement>
<bc:font-size>8pt</bc:font-size>
<bc:omit-brackets>false</bc:omit-brackets>
</bc:human-readable>
</bc:ean-128>
</bc:barcode>
メモ
- EAN-128はCode128シンボロジーを基礎にしている。
- {height}は少なくともバーコードの長さの0.15倍か0.25インチ以上無ければならない
- {template}の値は通常は任意である。実装すると、AI(アップリケーション識別子)を検査することで正しいテンプレートを識別しようとする。組み込まれた定義済みアップリケーションテンプレートのテーブルが用意されている。
- {template}の書式は(カッコに囲まれた)AIナンバーの繰り返しの集合で、後にフィールド記述が続く。許容されるデータ型は「n」(数字)、「an」(英数字)、「d」(日付)、と「cd」(チェックデジット)である。「cd」はAIの後の最初の文字から始まるチェックディジットを計算する。「cd0」はチェックディジットの計算にAIを含む(USPSで使われる)。複数のフィールド部は「+」文字で区切れる。
- 例:「n13」はちょうど13桁の数字フィールドを定義する。「n13+cd」はちょうど13桁の数字フィールドにチェックディジット加えたものを定義する。「an1-9」は1から9文字の英数字フィールドを定義する。
実例:”(01)n13+cd(421)n3+an1-9(10)an1-20″ - {group-separator}はメッセージの中で使うグループの区切り文字を定義する。デフォルトではASCII
(0×1D, 035) または0xF1 がグループ区切り文字として認識される。XSL-FOアップリケーションでは、0xF1はASCII の替わりに使う必要があるかもしれない。 - {check-digit-marker}は、メッセージの中で、バーコード4Jにより自動的に計算されるチェックディジット用のプレースホルダーとして使う文字を表す。
- もし、{omit-brackets}の設定が「true」の場合、可読領域のAIの周りにカッコが表示されない。
メッセージ書式
- 有効な文字:全ての7ビットASCII(US-ASCII)文字がサポートされている
- ファンクション1と3が使用可能で、メッセージの中では、ASCII文字の0xF1 (241), 0xF3 (243)としてコード化される。
- Comments (Close): 0
- Trackbacks (Close): 0
ホーム > その他のドキュメント