ゼブラプリンタ制御言語 ZPL II (Zebra Programming Language)

ZPL II(Zebra Programming Language)とは

ZPL II(Zebra Programming Language)とは、ゼブラプリンタを制御するネイティブなコマンドプロトコルです。
ZPL® をゼブラプリンタへ送信することにより、テキスト文字やバーコード、およびグラフィックを含んだ簡単なレイアウトから複雑なレイアウトまで様々なラベルを作成することができます。
PLCからゼブラプリンタを制御する場合や、より細かなレイアウトを作成したい場合、精密に制御したい場合にご利用ください。

ZPL® および ZPLII® はゼブラテクノロジーズコーポレーションの登録商標です。ZPL II は、旧 ZPL と互換があります。

ZPL II の特徴

  • PCやミニコンピュータ、メインフレーム及びネットワークでの互換性
  • 連番フィールド機能 - 初期値と増減値の設定
  • ラベル複写、枚数指定コントロール、プリンタPAUSE等をプログラム制御
  • 罫線等のライングラフィックが容易に描画
  • スケーラブルフォント搭載 (アウトラインフォント)
  • ビットマップイメージグラフィックスの登録

ZPL II フォーマットプリフィックス & コントロールプリフィックス

ZPL II は「プリフィックス+2文字のコード+パラメータ」で構成されます。
言語全体は、表示可能ASCII文字のみでプログラムが可能です。エスケープシーケンスを使用せずにコーディングが可能です。

ZPL II には、フォーマット命令とコントロール命令の2つのタイプがあります。

フォーマット命令

フォーマット命令は、『レイアウト』の設計図にあたるものです。
これらは、用紙長、フィールド回転、フィールドデータ等の情報を定義します。
フォーマット命令はデフォルト設定では、カレット ^ 文字から始まります。
このカレットのことをフォーマットプリフィックスと呼びます。

例) ^XA (レイアウト開始コマンド)

コントロール命令

コントロール命令は、特定の動作を即座に実行する命令に使用します。
これらは、メモリークリア、ステータス要求等のように、フォーマット命令より優先度が高い命令です。
コントロール命令は、デフォルトではチルダー ~ から始まります。
ZPL II では、このチルダーのことをコントロールプリフィックスと呼びます。

例) ~HS (ステータス要求コマンド)

プリフィックス変更

コントロールプリフィックス ~ や ^ といったプリフィックスキャラクタは、ZPL命令で変更することができます。プリンタにLCDパネル付属のモデルでは、LCDパネル操作でも変更できます。

  • ^CT または ~CT (コントロールプリフィックス変更)
  • ^CC または ~CC (コマンドプリフィックス変更)

例) ^CC< (コマンドプリフィックスを < に変更)

ゼブラプリンタ 内部メモリについて

ZPL IIでは、オブジェクトをゼブラプリンタ内部メモリのどの場所へ保存するか、またはどの場所から読み込むかを『デバイス名』を使って指示します。
また、そのオブジェクトの名前を『オブジェクト名』『拡張子』を使って指示します。

例) E:GOTHIC.FNT

場所「E」(フラッシュメモリ)にある、名前「GOTHIC」(漢字)、拡張子「.FNT」(フォント)をあらわします。

ZPL II で定義されているデバイス名

ZPLで定義されているデバイス名は、次の5種類です。

R: DRAM
A: CFメモリカード
B: PCMCIAメモリカード
E: EPROM、または拡張フラッシュメモリー
Z: 内部ファームウエア

ZPL II の オブジェクト名と拡張子

ZPLでのオブジェクトとは、グラフィックイメージ、ラベルフォーマット、フォントデータを指します。
オブジェクトをゼブラプリンタ内部メモリに保存する際、そのオブジェクトに『オブジェクト名』(8桁英数字)をつけます。
呼び出し、削除する際、そのオブジェクトにつけられたオブジェクト名を使用します。
オブジェクト名の後にピリオド(.)+3桁の英数字で『拡張子』をつけます。

ZPLで定義されている主な拡張子デフォルトは、次のとおりです。

.ZPL ZPLラベルフォーマット
.FNT フォント
.GRF グラフィック

デバイス名+オブジェクト名+拡張子の関係は、MS-DOSのドライブ名+ファイル名+拡張子の関係によく似ています。
またZPLでは、AUTOEXEC.ZPL オブジェクトに対し、特別な動作を行います。AUTOEXEC.ZPLは、電源投入、POST(セルフテスト)終了後、自動的に実行されます。
電源投入時に実行させたい ZPLスクリプト をAUTOEXEC.ZPL に記載し、不揮発性のデバイス(A: B: E: のいずれか)に保存してください。

ゼブラプリンタ フォントについて

ゼブラプリンタは、『8つのビットマップフォント』と『1つのスケーラブルフォント』を標準搭載しています。これらは、英数字のみのフォントのため、漢字フォントが必要な場合は、オプションの漢字フォントをフラッシュメモリーへダウンロードします。

ビットマップフォントは、最小(基準)サイズの、縦横それぞれ2~10倍まで整数倍することができます。
例えば、最小サイズが高さ9ドット、幅5ドットのフォントを縦横それぞれ3倍にする場合は、高さ27ドット、幅15ドットで指定します。
スケーラブルフォントは、フォントサイズを縦横任意のサイズで指定ができます。

ゼブラプリンタ ZPL II サンプル

バーコードとテキスト文字を含んだサンプルを作成する手順について、ステップ毎に解説いたします。

ゼブラプリンタへの ZPL II 送信文字列

^XA
^LH30,30
^FO20,10^AD^FDZEBRA^FS
^FO20,60^B3^FDAAA001^FS
^XZ

ZPL サンプル 1
ZPL サンプル 1

ZPL II 解説

コマンド解  説
^XAレイアウトの最初に記述
^LH30,30座標基点を右へ30ドット、左へ30ドット移動
^FO20,10座標を座標基点からX 20ドット、Y 10ドットに指定
^ADフォントDを選択
^FDZEBRA^FD以降に続く文字列が印字データ
^FS印字データの区切り
^FO20,60座標を座標基点からX20ドット、Y60ドットに指定
^B3バーコード Code39 を選択
^FDAAA001^FD以降に続く文字列が Code39 のデータ
^FS印字データの区切り
^XZレイアウトの最後に記述

ゼブラプリンタ ZPL II 演習1
『レイアウトをグラフィックとして保存』

レイアウトをグラフィックイメージとして、ゼブラプリンタのDRAMメモリーへ保存、および保存されたレイアウトを呼び出して印刷する方法について説明します。
この演習では、2つのスクリプトを例にしています。最初は、レイアウトをグラフィックイメージとして保存するスクリプトです。2つ目は、グラフィックイメージとして保存されたレイアウトを呼びだし、印刷するスクリプトです。

グラフィックイメージの呼び出しには、^IL命令を利用していますが、^IM命令を利用することも出来ます。これら2つの命令の違いは、^IL命令は常に相対座標^FO0,0に呼び出されるのに対し、^IM命令は^FO命令にて任意の座標を設定することができます。

ゼブラプリンタへの ZPL II 送信文字列

(レイアウトの保存)
^XA
^LH30,30
^FO20,10^AFN,56,30
^FDZEBRA^FS
^FO20,80^B3N,Y,20,N,N
^FDAAA001^FS
^ISR:EXERPROG.GRF,N
^XZ

(レイアウトの呼び出し)
^XA^ILR:EXERPROG.GRF^XZ

ZPL サンプル 2
ZPL サンプル 2

ZPL II 解説

(レイアウトの保存)

コマンド解  説
^XAレイアウトの最初に記述
^LH30,30座標基点を右へ30ドット、左へ30ドット移動
^FO20,10座標を座標基点からX 20ドット、Y 10ドットに指定
^AFN,52,39フォントFを選択。縦52ドット×横39ドットで選択
^FDZEBRA^FD以降に続く文字列が印字データ
^FS印字データの区切り
^FO20,80座標を座標基点からX 20ドット、Y 80ドットに指定
^B3N,Y,20,N,NCode39選択。チェックデジット自動計算、ヒューマン リーダブルの印刷無し
^FDAAA001^FD以降に続く文字列が印字データ
^FS印字データの区切り
^ISR:EXERPROG.GRF,Nレイアウトを内部DRAM(R:)にEXERPROG.GRFという名前で保存
^XZレイアウトの最後に記述

(レイアウトの呼び出し)

コマンド解  説
^XAレイアウトの最初に記述
^ILR:EXERPROG.GRF内部DRAM(R:)にEXERPROG.GRFという名前で保存されているレイアウトを読み込み
^XZレイアウトの最後に記述

ゼブラプリンタ ZPL II 演習2
『印刷枚数、180゜回転、印字速度、バックフィード抑制』

この演習では、印字速度、印刷枚数、切り取りモード(TEAR-OFF)時のバックフィード動作の抑制、カッターモード(CUTTER)時のカット動作の抑制、180゜回転方法といった ゼブラプリンタ の細かな制御について説明します。

これらの制御命令は、レイアウト命令のスクリプトに組み込んでゼブラプリンタへ送信してください。

ZPL には、ここで記載した以外にも様々な制御命令が用意されています。詳細につきましては『ZPL II プログラミング ガイド』をご確認ください。

ゼブラプリンタへの ZPL II 送信文字列

^XA
^PR3
^LH360,30
^FO20,10^AF
^FDZEBRA^FS
^FO20,60^B3,,40,,
^FDAAA001^FS
^POI
^PQ2
^XB
^XZ

ZPL サンプル 3
ZPL サンプル 3

ZPL II 解説

コマンド解  説
^XAレイアウトの最初に記述
^PR3印刷時のラベルフィード速度 3インチ/秒(約76mm/秒)
^LH360,30座標基点を右へ360ドット、左へ30ドット移動
^FO20,10座標を座標基点からX 20ドット、Y 10ドットに指定
^AFフォントFを選択
^FDZEBRA^FD以降に続く文字列が印字データ
^FS印字データの区切り
^FO20,60座標を座標基点からX 20ドット、Y 60ドットに指定
^B3,,40,,Code39選択
^FDAAA001^FD以降に続く文字列が印字データ
^FS印字データの区切り
^POIラベル全体を180度回転
^PQ2印刷枚数2枚
^XBバックフィード動作、カッター動作を抑制
印刷時は巻取りモード(Rewind)と同様の動作をします
^XZレイアウトの最後に記述

ゼブラプリンタ ZPL II 演習3
『連番フィールド』

この演習では、ラベルフォーマット内の特定フィールドを連番指定する命令とパラメータについて説明します。

ゼブラプリンタへの ZPL II 送信文字列

^XA
^LH30,30
^FO20,10^AF^FDZEBRA^FS
^FO20,60^B3,,40,,^FDAA001^FS
^FO20,180^AF^SNSERIAL NUMBER 00000000111,1,Y^FS
^PQ10
^XZ

(右のサンプルは、10枚印刷したうちの1枚目と10枚目の印字結果です)

ZPL サンプル 4
ZPL サンプル 4

ZPL II 解説

コマンド解  説
^XAレイアウトの最初に記述
^LH30,30座標基点を右へ30ドット、左へ30ドット移動
^FO20,10座標を座標基点からX 20ドット、Y 10ドットに指定
^AFフォントFを選択
^FDZEBRA^FS^FD以降に続く文字列が印字データ
^FO20,60座標を座標基点からX 20ドット、Y 60ドットに指定
^B3,,40,,Code39選択
^FDAA001^FS^FD以降に続く文字列が印字データ
^FO20,180座標を座標基点からX 20ドット、Y 180ドットに指定
^AFフォントFを選択
^SNSERIAL NUMBER 00000000111,1,Y^FS連番フィールド定義。初期値111、増分値1、ゼロ埋め有り
^XZレイアウトの最後に記述

ゼブラプリンタ ZPL II 演習4
『レイアウトをフォーマットとして保存』

この演習では、ラベルフォーマットの命令とパラメータを保存する方法について説明します。

演習1の『レイアウトをグラフィックとして保存』と演習4『レイアウトをフォーマットとして保存』の違いは、前者はZPLスクリプトを展開した結果を保存するのに対し、後者はZPLスクリプトを展開前に保存します。
後者の場合、保存したZPLスクリプトを呼び出した後に、可変フィールド部分のZPLスクリプトを追加したり、次の例のように可変項目にデータを差し込むことができます。

ゼブラプリンタへの ZPL II 送信文字列

(レイアウトの保存)
^XA
^DFR:FORMAT.ZPL^FS
^LH30,30
^FO20,10^AF^FN1^FS
^FO20,60^B3,,40,,^FN2^FS
^XZ

(ZPLスクリプトの呼び出し)
^XA
^XFR:FORMAT.ZPL^FS
^FN1^FDZEBRA^FS
^FN2^FDAAA001^FS
^XZ

^XA
^XFR:FORMAT.ZPL^FS
^FN1^FDBEARS^FS
^FN2^FDZZZ999^FS
^XZ

ZPL サンプル 5
ZPL サンプル 5

ZPL II 解説

コマンド解  説
^XAレイアウトの最初に記述
^DFR:FORMAT.ZPL^FSZPLスクリプトを内部DRAM(R:)にFORMAT.ZPLという名前で保存
^LH30,30座標基点を右へ30ドット、左へ30ドット移動
^FO20,10座標を座標基点からX 20ドット、Y 10ドットに指定
^AFフォントFを選択
^FN1^FSフィールド番号『1』を定義
^FO20,60座標を座標基点からX 20ドット、Y 60ドットに指定
^B3,,40,,Code39選択
^FN2^FSフィールド番号『2』を定義
^XZレイアウトの最後に記述

(ZPLスクリプトの呼び出し)

コマンド解  説
^XAレイアウトの最初に記述
^XFR:FORMAT.ZPL^FS内部DRAM(R:)にFORMAT.ZPLという名前で保存されているZPLスクリプトを読み込み
^FN1^FDZEBRA^FSフィールド番号『1』に定義されたフィールドにデータ『ZEBRA』を差込み
^FN2^FDAAA001^FSフィールド番号『2』に定義されたフィールドにデータ『AAA001』を差込み
^XZレイアウトの最後に記述

(ZPLスクリプトの呼び出し)

コマンド解  説
^XAレイアウトの最初に記述
^XFR:FORMAT.ZPL^FS内部DRAM(R:)にFORMAT.ZPLという名前で保存されているZPLスクリプトを読み込み
^FN1^FDBEARS^FSフィールド番号『1』に定義されたフィールドにデータ『BEARS』を差込み
^FN2^FDZZZ999^FSフィールド番号『2』に定義されたフィールドにデータ『ZZZ999』を差込み
^XZレイアウトの最後に記述

ゼブラプリンタ ZPL II 演習5
『グラフィックイメージを印刷』

この演習では、Windowsで作成したビットマップ形式のグラフィックデータをゼブラプリンタで印刷する方法について説明します。
ロゴマークの入ったレイアウトを印刷するすることができます。

bitmapデータを作成

ドローソフトを使って、グラフィックデータを作成します。Windowsのペイントブラシでも作成が可能です。

作成したデータは『モノクロ ビットマップ(*.bmp;*.dib)』で名前をつけて保存します。

ゼブラプリンタのZPLでは、モノクロのビットマップ形式をサポートしています。
カラーのビットマップ形式はサポートしていません。

ペイントブラシ サンプル
Windowsペイントプラシ サンプル
名前を付けて保存
名前を付けて保存

bitmapデータのファイルサイズを確認

作成したビットマップファイルのプロパティを開き、ファイルサイズを確認します。
ファイルサイズは「ディスク上のサイズ」ではなく、実際のファイルサイズ欄を参照してください。

右の例では、10,402バイトとなります。

ファイルのプロパティ
ファイルのプロパティ

ZPLのヘッダーを作成してダウンロード

ZPL制御命令 ~DY を使って、ダウンロードします。
~DYコマンドの後ろにオブジェクト名, B, B, ファイルサイズ,,

例)~DYR:ZEBRA.BMP,B,B,10402,,


内部メモリR:(DRAM)、オブジェクト名「ZEBRA.BMP」

ヘッダーをゼブラプリンタへ送信した後、続けて先程作成したbitmapファイルを送信します。

これでロゴイメージが、ゼブラプリンタにダウンロードされました。
正しくダウンロードされているかを確認するためには、ゼブラ本体の正面パネルから「LIST IMAGES」テストプリントを実行してください。
正しく登録されていれば、印刷されたテストプリントの中に「R:ZEBRA.BMP」がリストされます。

bitmapデータの呼び出し

ZPL制御命令 ^IM を使って、イメージを呼び出しします。

例)^XA^FO50,50^IMR:ZEBRA.BMP^FS^XZ

ZPLスクリプト ^IM については、前述の『演習1 レイアウトをグラフィックとして保存』で解説していますので、ここでは省略します。