バーコード/QRコードプラグイン

このプラグインについて

barcode
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分ほど待つか、再起動するとプラグインが読み込まれます。

基本的な使用方法

バーコードタグの詳細な仕様はBarcode4J ドキュメント抄訳を参照してください。ここでは概要を解説します。

パッケージに含まれているサンプル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
(日本語訳)
https://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(数字), A(英数字), 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コードについて

記述方法とデフォルト値は次のとおりです。
(ただし、バージョン2.0以前の各パラメータのデフォルト値はEAN-13(JAN-13)と同じになります。)

<bc:barcode>
  <bc:isbn>
    <height>{length:14mm}</height>
    <module-width>{length:0.33mm}</module-width>
    <quiet-zone enabled="{boolean:true}">{length:5mm}</quiet-zone>
    <checksum>{checksum-mode:auto=add|check}</checksum>
    <human-readable>
      <placement>{human-readable-placement:bottom}</placement>
      <font-name>{font-name:OCRB}</font-name>
      <font-size>{length:3.7mm}</font-size>
    </human-readable>
  </bc:isbn>
</bc:barcode>

再配布条件

Copper PDF バーコードプラグインは自由に配布することができます。
付属のライブラリについては、
copper-pdf/plugins/avalon-framework.LICENSE.txt
copper-pdf/plugins/barcode4j.LICENSE.txt
copper-pdf/plugins/Qrcode.LICENSE.txt
をお読みください。


PDF

Code 128

実例

example-code128

構文

<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) としてコード化される。

PDF

Codabar

実例

example-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]

PDF

Interleaved 2 of 5

実例

example-intl2of5

構文

<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]である。


PDF

DataMatrix

実例

example-datamatrix-square

構文

<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”)は”[)>u001E05u001D”.と表現される。同じデータがURLの一部としてエンコードされる(バーコードサーブレット使用時)と、”%5B%29%3E%1E05%1D”となる。

PDF

PDF417

実例

example-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)エンコーディングで翻訳される。

PDF

USPS Intelligent Mail

実例

example-usps4cb

構文

<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]
  • コード処理の過程でその他の全ての文字は自動的に除去される。

リンク

仕様詳細:http://ribbs.usps.gov/OneCodeSolution(英語)


PDF

POSTNET

実例

example-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}は計算されたチェックサムを可読領域に含めるかを決定する。

PDF

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 (0x1D, 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)としてコード化される。

PDF

EAN-8(JAN-8)

実例

example-ean-8

構文

<bc:barcode message="2012345">
  <bc:ean-8>
      <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-8>
</bc:barcode>

メッセージ書式

  • 有効な文字は[0~9]である。
  • メッセージの長さはchecksum-modeによって7か8文字でなければいけない。
  • checksum-modeが「auto」に設定された時の動作:もし、7文字のメッセージ通過した場合、検査文字が加えられる。もし、8文字のメッセージが通過したら、検査文字がチェックされる
  • 補足追加もサポートされてる(2~5文字)。バーコードメッセージに補足メッセージを「+」を付けて追記できる。
      例:22139337+12

PDF