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>

{type}は、「ean-13」や「code39」のようなバーコードタイプ名で置き換えてください。また、「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(モジュール幅)があります。これは1次元バーコードでは線の最小幅で、2次元バーコードではドットの大きさです。
  • {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:長方形シンボルの使用を強制する
  • データ型は{length:15mm}のような形式で記述します。データ型の後の値はデフォルトの値を意味します。

バーコード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>

可読部分のパターン

一般的な1次元バーコードは内部的な構造を持ちません。そのため、多数の桁からなる巨大な数字の場合、カスタマイズされた可読部分を表示します。

複雑で長いメッセージを簡単に読み取れるようにするためには、パターンが必要です。可読部分にカスタムパターンを加える機能が利用可能なのは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 1234567_890

サポートされている全てのバーコードの設定詳細

訳注:JANコードはEAN-13, EAN-8, EAN-128と互換であるため、これをそのまま使用してください。Copper PDFは、ISBN, QRコードもサポートしています。ISBN, QRコードについてはこちらを参照してください

{バーコード個別の設定}

PDF

Comments are closed.