6

植物園のラベルを印刷するコードを書いています。各ラベルは個別に印刷されますが、各ラベルには異なる情報が記載されています。各ラベルには学名が含まれており、サイズが大きく異なり、2 行を超える場合があります (ラベルのサイズは幅 10cm、高さ 2.5cm)。私たちの問題は、主に名前が 24 文字を超えると発生します (** の行を参照)。24 文字以下の名前を選択すると、問題なく印刷されます。それ以上は印刷されません。他のすべての「項目」をラベルから取り除き、「名前」要素だけを残すと、最初の 24 文字のみが出力され、残りは切り捨てられます (これは、^FB ブロックと別の要素が重複する可能性があるかどうかをテストするために行いました)。がこの問題を引き起こしている可能性があります)。

追加情報: we compile this code within a BASIC environment and use variables such as ":name:", ":Acc.dt":" as seen bellow. 私たちのデータベースはこの情報を提供し、内部ルーチンをチェックしました私たちのコードは ZPL で正常に動作していましたが、最近 ZPL II に移行する必要があり (新しいモデル GX430t を購入しました)、この問題が発生し始めた時点で ZPL コードを変更する必要がありました。

コードは次のとおりです。

^XA
^LH40,40
^MMT
^PW1200
^LL1200
^FO16,05^A0N,35,^FDAcc. num.^FS
^FO170,05^A0,35,^FV":accnum:"^FS
^FO360,05^A0,35,^FV":qual:"^FS
^FO350,35^A0N,30,^FDAcc.dt.^FS
^FO450,35^A0N,30,^FB790,3,0,L,
^FH\^FV":accdt:"^FS
^FO430,70^^A0N,25,^FB790,3,0,L,
^FH\^FDProv. type^FS
^FO560,70^A0N,25,^FV":provtype:"^FS
^FO800,225^A0N,30,^FB790,3,0,L,
^FV":cc:"^FS
**^FO10,100^A0N,40,^FB790,3,0,L,
^FV":name:"^FS**
^FO1000,05^A0,35,^FV":proptype:"^FS
^FO5,225^A0,25^FVColl.^FS 
^FO55,225^A0,25^FV":coll:"^FS
^FO375,225^A0,25,^FV":consstat:"^FS
^FO1000,70^A0,25,^FV":reqby:"^FS
^FO535,180^BCN,55,N,N,N^FV":qual:"^FS
^FO60,45^BCN,35,N,N,N^FV":accnum:"^FS
^PQ1,0,1,Y
^XZ

これを修正しようとしたのは次のとおりです (一部がワイルドカードのように思われる場合はお詫びします)。

  1. ラベルのフォントの種類、サイズ、位置を変更する。
  2. ^FO を ^FT に変更します。
  3. 内部データベース ロジックを調べました。
  4. 奪う^FH\;
  5. ^FB 行内の値を変更します (考えられるほぼすべての順列を試しました)。
  6. 24 文字を超える名前を手動で入力 (メモ帳を使用 - データベース/コンパイラなし) - 同じ問題。

これについてのご意見はケリーに大歓迎です

4

1 に答える 1

5

以前にも、プリンターの製造元、ファームウェア、言語を問わず、この問題が発生しました。

最初に、2014 ZPL II プログラミング ガイド (P1012728-009 Rev. A) から直接転用した説明をいくつか紹介します。

^TBコマンドは、定義された幅と高さでテキスト ブロックを印刷します。テキスト ブロックには自動ワードラップ機能があります。テキストがブロックの高さを超える場合、テキストは切り捨てられます。」

^FB (フィールド ブロック) コマンドを使用すると、テキストを定義済みのブロック タイプ形式に出力できます。テキスト文字列に指定された原点、フォント、および回転を使用して、^FD (フィールド データ) 文字列をテキスト ブロックにフォーマットできます。 、自動ワードラップ機能が含まれています。」

技術的には、テキスト ブロックとフィールド ブロックの違いは、前者では高さがドット単位で、後者では高さが行単位であるということです。

また、言及されていませんが、 ^FBコマンドは指定された行数に収まらないテキストも切り捨てることに注意してください。ここで、 A0コマンドのフォント サイズとFBコマンドの行間が決定において重要な役割を果たします。その 2 行目または 3 行目を表示するか、切り捨てるか。

ちなみに、TSPL などの他の言語では、テキスト ブロックの切り捨てはありません。ブロックの高さを 3 行に指定した場合に、4 行分のテキストがある場合、4 行目が 3 行目に重なってこれを示します。これはひどく見えるかもしれません。 、しかし、明らかではない切り捨てによるデータ損失よりはましです。

両方のコマンドの場合:

  • 「データに^FT (フィールド タイプセット) を使用すると、テキストの可能な最後の行のベースライン起点が取得されます。つまり、フィールド ブロックは下から上に埋められます。」
  • ^FO (Field Origin) を使用すると、フィールド ブロックが上から下に塗りつぶされます。」

実際には、 ^FBコマンドを期待どおりに動作させることしかできませんでしたが、これは、使用したファームウェア (ZPL II 準拠の Bluetooth プリンター) に^TBが実装されていないことが原因である可能性があります。

Labelary Viewerで 2x2 ラベルの次のスニペットをテストできます。

^XA
    ~TA0
    ^MTD
    ^MNW
    ^MMT
    ^MFN
    ~SD15
    ^PR6
    ^PON
    ^PMN
    ^PW406
    ^LS0
    ^LRN
    ^LL406
    ^LT0
    ^LH0,0
    ^CI0
^XZ
^XA
    ^FO324,10,0^FB386,2,0,C,0^A0R,36,28.8^FH^FD"The King" Cupcake^FS
    ^FO278,10,0^FB386,1,0,C,0^A0R,28,22.4^FH^FDUse By 11/24/2015 02:45 PM^FS
    ^FO152,10,0^FB386,1,0,C,0^A0R,24,19.2^FH^FD11/24/2015 02:45 PM^FS
    ^FO62,140,0^FB250,1,0,R,0^A0R,24,19.2^FH^FDSL: 4 hours^FS
    ^FO38,10,0^FB386,1,0,L,0^A0R,18,14.4^FH^FDPREP DATE:^FS
    ^FO8,10,0^FB386,1,0,L,0^A0R,28,22.4^FH^FD11/24/2015 10:45 AM^FS
    ^FO62,10,0^FB50,1,0,L,0^A0R,24,19.2^FH^FDEMP:^FS
    ^FO92,10,0^FB376,3,0,J,0^A0R,18,14.4^FH^FDIngredients: 1 1/2 cups all-purpose flour, 1 teaspoon baking powder, 1/2 teaspoon salt, 8 tablespoons (1 stick) unsalted butter, room temperature, 1 cup sugar, 3 large eggs, 1 1/2 teaspoons pure vanilla extract, 3/4 cup milk.^FS
    ^PQ3,,,Y
^XZ

特に、A0およびFDコマンドの前にFBを付けました。ビューアーを使用すると、成分行のFTFOからの変更の効果、 A0フォント サイズの変更の効果、およびFB行数を 3 から 2に変更した効果をすばやくテストできます(ビューアーは切り捨てません)。テキストところで)。

もちろん、実際にラベルを印刷するのに匹敵するものはありません.ZPL II「準拠」プリンターは、製造元とファームウェアのバージョンに応じてテキストを切り捨てる場合と切り捨てない場合があります.

それが役立つことを願っています!

于 2016-07-19T17:18:44.237 に答える