DPLからZPLへの変換:Datamax-O'NeilプリンタをZebraに置き換える
Datamax DPLのレコード形式ラベルをZPLに対応付ける方法、単位とレコード構造の違い、実例、レガシーI-Class・M-Classプリンタ置き換えのチェックリスト。
Datamax-O'Neil(現在はHoneywellの一部)のプリンタは20年にわたり倉庫を動かしてきました。そのDPLジョブは、I-Classが新しかった頃に書かれたERPの印刷プログラムに今も埋もれています。これらのプリンタをZebra ZTに置き換えるとき、DPLストリームはZPLにならなければなりません。DPLは独特です:名前付きパラメータのコマンドではなく固定幅の数値レコードを使うため、送信はコンパクトですが読むのは骨が折れます。
コマンド対応表
| 操作 | DPL(Datamax-O'Neil) | ZPL(Zebra) |
|---|---|---|
| 開始/終了 | <STX>L … E(Lでフォーマットを開き、Eで印刷) | ^XA … ^XZ |
| 単位 | <STX>n = インチ(1/100 in)、<STX>m = メートル法(1/10 mm) | ドット |
| テキスト | レコード:回転、フォント、幅×、高さ×、サイズ、行、列、データ → 1911A030050 0020Hello | ^FO40,30 ^A0N,36,36 ^FDHello^FS |
| Code 128 | レコード:回転、シンボルE、太、細、高さ、行、列、データ → 1E2209000650020data | ^BY2 ^BCN,90,Y,N,N ^FDdata^FS |
| 線/枠 | タイプXレコード、l(線)またはb(枠)と寸法 | ^GB300,2,2^FS |
| 枚数 | フォーマット内のQ0005 | ^PQ5 |
| 濃度/速度 | H15(熱)/ P(速度)レコード | ^MD10 ^PR4 |
実際に変わるもの
- 単位:DPLの位置はドットではなく1/100インチ(メートル法モードでは1/10 mm)です。インチモードの行0050は0.50インチ = 203 dpiで101ドット。すべての座標を変換する必要があり、プリンタのモード(<STX>nか<STX>m)を先に読まないとすべてが間違った位置に落ちます。
- 行と列の順序:DPLレコードは行(垂直)を列(水平)の前に置きます。ZPLの^FOはxそしてyです。取り違えが最も多い翻訳バグです。
- フォント:DPL内蔵フォント0〜8は整数倍率のビットマップ、フォント9はA03のようなコードでスムーズ(スケーラブル)フォントを選びます。ビットマップは実測高さで^A0に対応付けます。
- バーコード:DPLはシンボルを1文字(A Code 39、B UPC-A、E Code 128、F EAN-13、…)で符号化し、太・細バーの桁を伴います。ZPLは^Bコマンドと^BYを使います。DPLの高さはレコード内にあり、可読行はフラグではなくシンボル文字の大文字/小文字で選びます。
- グラフィック:DPLは<STX>I…で画像をダウンロードします。一度^GFまたは保存^DGグラフィックに変換してください。
変換前と変換後(簡略化)
<STX>n <STX>L D11 1911A030050 0020Safety Harness 1E2209000650020 7501234567893 Q0001 E
^XA ^PW812 ^LL609 ^FO40,101 ^A0N,36,36 ^FDSafety Harness^FS ^FO40,132 ^BY2 ^BCN,90,Y,N,N ^FD7501234567893^FS ^PQ1 ^XZ
1/100インチの行0050と0065は101ドットと132ドットに、列0020はx = 40になりました。レコードのフィールドは名前付きZPLパラメータに展開されました。
移行チェックリスト
- 古いデザインファイルではなくERPスプールから実際のDPLジョブを取得する — 実際に印刷されたのはスプールの内容。
- 座標を変換する前に単位モードと元のプリンタ解像度(203または300 dpiのI-Class)を確認する。
- Zebraですべてのバーコードを検証する。DPLの細バー桁は^BYと1対1に対応しない。
- ERPが動的に埋めるレコードフィールドを特定する。それが新テンプレートの可変フィールドになる。
EtikStudioでの方法
DPLインタプリタは単位モードを読み、各レコードを位置・フォント・サイズ・データに展開し、ラベルをミリメートル単位で描画します。Zebraプロファイルへのエクスポートは、変換済み座標と再構築したバーコードを持つZPLを生成し、ERPが埋めていたフィールドは同じデータに接続された変数になります。
コマンド例は分かりやすさのため簡略化しています。正確な構文はプリンタの機種とファームウェアにより異なります。必ず対象プリンタでテストしてください。