ラベルのテンプレート

ラベルのライブラリにあるプリンターの指令ファイル 1 つです。名前と文字コード、指令の編集欄とファイルの取り込み、差し込み項目の書き方、インストール済みの Windows のキュー、そして試し送りを説明します。

Markdown で表示

ラベルのテンプレートは、ラベルのライブラリ(Process > テンプレート > ラベル)の 1 行です。プリンターに送れる指令ファイル(ZPL、EPL、CPCL、そのほかどの RAW の指令言語でも)に、実行の値が入る場所を {{NAME}} の差し込み項目で書いたものです。Ganter Lab は、そのバイト列を Windows の RAW のキューに送り、差し込み項目を置き換えます。プリンターの言語を解釈することも、描くことも、下見せすることも決してないので、レイアウトそのものは、プリンターのメーカーのツールで設計します。編集にはProcess の管理が要ります。ユニットが実行中の間、このページは全体が動かず、ランタイムが停止している間は試し送りが拒まれます。新しいテンプレートは空で生まれ、「Label」(「Label 2」、と続きます)という名前が付き、指令を持つまで何も印刷しません。描く経路も送る経路も、空のテンプレートを拒みます。

ページは 5 枚のカードで、仕事をする順に並びます。識別と文字コード、指令、その中に見つかった差し込み項目、設計ツールでファイルを用意する方法、そして試し送りです。

テンプレート

項目 何であるか 値 / 既定 効果
名前 ライブラリと、どのラベルの指令も見せる名前です。 文字。欄を離れたときに効きます。 空の名前は拒まれ(「ラベルのテンプレートには名前が必要です。」)、前の名前が残ります。
文字コード 保存したバイト列を文字として読み返す方法と、差し込む値をどう符号化するかです。 UTF-8(既定)、Latin-1、ASCII。 変えると、編集できる指令を新しい文字コードで書き直します。新しい文字コードで表せない文字は拒まれ(「指令は UTF-8 のままです。3 行目に、ASCII では表せない 'é' があります。」)、文字コードはそのまま残ります。編集できない指令はバイト列を保ち、新しい宣言のもとで読み直されるだけです。

プリンターの指令

操作 何をするか
編集欄 指令を持つ等幅の文字の欄で、入力例に ZPL の形が出ます。打ちながら検査されます(差し込み項目の一覧と、拒否があればその理由が、文字に付いていきます)。欄を離れると保存します。拒まれた下書きは理由とともに画面に残り、保存されません。別のテンプレートを開くと、それは捨てられます。保存されているバイト列と同じ文字を保存しても、何も変わりません。
ファイルを取り込み… / ファイルを置き換え… プリンターの指令ファイルを持ち込みます(.zpl.epl.epl2.cpcl.prn.lbl.txt)。バイト列は構成の中に複製され、たどれるようにファイル名が保たれます。元のファイルを移動したり削除したりしても、テンプレートには影響しません。空のファイルと 2 MiB を超えるファイルは拒まれ、差し込み項目の書き方が正しくないファイルも拒まれます。

指令を文字として編集できるのは、往復してもバイト列が 1 バイトも変わらない間だけです。宣言された文字コードで読めて、同じバイト列に戻り、どの行も同じ終わり方をして(すべて LF か、すべて CR LF。取り込んだ CR LF の流儀は、保存のたびに戻されます)、タブと改行のほかに制御文字を持たない、という条件です。どれかに通らない指令は編集できないままになります。編集欄はその理由に置き換わり(「12 バイト目の 0x1B は、UTF-8 の文字ではありません。」、「改行が混ざっています。CR LF で終わる行と、LF だけで終わる行があります。」)、バイト列は、ファイルを置き換えることでしか変わりません。カードの下の 1 行が、何が保存されているかを言います。「まだ何も保存していません。」、「labels.zpl から取り込み · 1.2 KiB · CR LF の改行はそのまま保ちます」、または「ここで作成 · 240 B」です。

見つかった差し込み項目

保存された指令の中に見つかった差し込み項目が、最初に現れた順に並びます。差し込み項目は厳密な ASCII の {{NAME}} です。名前は A から Z で始まり、A から Z、0 から 9、下線が続き、長さは 64 文字までで、}} で閉じます。{{ で開いてこの書き方に従わないものは、そのバイトの位置と、破った決まりとともに拒まれます(「40 バイト目のラベルの差し込み項目の書き方が正しくありません。名前に使えるのは A-Z、0-9、下線だけです。」)。差し込み項目の外のバイトはすべて保たれ、置き換えは 1 度だけで、決して入れ子にはなりません。

指令のないテンプレートには「まだ指令がありません。上にプリンターの指令を書くか、ラベルの設計ツールから書き出したファイルを取り込んでください。それまで、このテンプレートは何も印刷しません。」と出ます。指令があって差し込み項目がないテンプレートには「差し込み項目は見つかりませんでした。この固定のラベルは毎回同じバイト列を送り、実行のデータは使いません。」と出て、これも正しいテンプレートです。種類の異なる差し込み項目には、このテンプレートを使うどのラベルの指令でも 1 つずつ取得元が要ります。同じ差し込み項目が繰り返し出てくるところには、同じ値が入ります。カードは、常に立つ決まりで閉じます。Ganter Lab が確かめるのは差し込み項目の書き方であって、メーカーの指令ではありません。信頼できる指令だけを保存してください。指令はプリンターの動作を変えることがあります。

ラベルの設計ツールでテンプレートを用意する

流れを畳んで置いてある覚え書きです。

  1. ZebraDesigner など、プリンターのメーカーのツールでラベルを設計します。
  2. 文字やバーコードの中身に、{{SERIAL}}{{RESULT}} のような Ganter Lab の差し込み項目を書きます。
  3. ZPL など、プリンターに送れる指令ファイルを書き出します。設計ツールのプロジェクトファイルは取り込まないでください。
  4. そのファイルをここに取り込み(または中身を指令の欄に貼り付け)、見つかった差し込み項目を確かめます。
  5. 下に代表的な値を入れ、インストール済みの Windows のキューに対して試します。

同じ流れが EPL、CPCL、ほかのプリンターの指令言語にも当てはまります。

試し送り

操作 何をするか
キューを再読み込み 対話中の Windows の利用者にインストールされている印刷キューを読み直します。読めなかったときは、選択欄の横にそう出ます。
差し込み項目 1 つにつき 1 つの値の欄 この送信にだけ、その差し込み項目に入れる見本の文字です。固定のテンプレートには「この固定のテンプレートには、見本の値は要りません。」と出て、空のテンプレートには「このテンプレートにプリンターの指令が入るまで、送るものはありません。」と出ます。
インストール済みの Windows のキュー 試しの送り先のキューです(「(キューを選択)」または「(インストール済みのキューなし)」)。
試しに送る 保存された指令を見本の値で描き、Ganter Lab test · <template> という名前の RAW の文書として送ります。実行記録も成果物も作られません。結果は操作ログ帯に出ます(「試験用のラベルを「Q」に送りました。」または「試し送りに失敗しました:理由」)。

試しに送るは、指令が保存されていないとき、キューを選んでいないとき、送信中、そしてページが動かない間は灰色になります。宣言された文字コードで差し込み項目が運べない値は、描く仕組みが拒みます。成功は、Windows のキューが RAW の文書を受け付けたという意味です。実際にラベルが印刷されたことの確認ではありません。

値がどこから来るか

上の見本の値は、試しのためだけのものです。実行では、テンプレートの種類の異なる差し込み項目それぞれが、それを使うラベルの指令の上で、1 つの限られた取得元に対応付けられます(アクション)。固定したメタデータ、モデルの名前と版、ユニットの名前とコード、手順の名前とコード、実行記録の識別子、開始の時点、実行記録の状態、そして完了時にはさらに終了の時点、所要時間、総合判定、終了の理由、そしてサイクルをはっきり指定した名前付きの判定基準の結果 1 つです。日付と時刻の取得元は書式を取り(ステーションの日付と時刻、ステーションの日付、ステーションの時刻、ISO 8601 形式)、数値の取得元は決まった小数桁を任意に取ります(0 から 9)。数は、それを読む機械のために書かれるのであって、ステーションが画面で数を見せるやり方では書かれません。桁区切りは決して入れません。バーコードの中に入ると、受け取る側の仕組みが壊れるからです。小数点は常に不変のものを使い、件数や秒数の所要時間のような整数は、整数のまま書きます。制御文字(改行も含みます)や、プリンターの指令を始める文字(^~)を持つ値は、その差し込み項目を名指して拒まれます。それが入っている行を割ってしまうか、別のラベルを印刷してしまうからです。どの区切りが何を差し出すか、成果物がどう固定されるか、送信がどう記録されるかは ラベルとレポートの発行 にあります。記録された実行記録に対してテンプレートを手で対応付けるのは ラベルとレポート です。

このページがしないこと

ラベルの下見は描かず、プリンターの言語については何も確かめません。差し込み項目を値に対応付けることもしません。それはラベルの指令の仕事です。実行のためにラベルを印刷することもしません。実行の成果物は、履歴にあるその記録から印刷します。そして、テンプレートを削除しても(バーのラベルを削除)、記録された成果物には何も起きません。それを名指したままの指令が、出さなくなるだけです。