バーコードコード128を中央に配置する方法を知りたいのですが、画像上で、今は左揃えになっていることがわかります。
私のzpl:
^XA
^LH10,10
^FO0,0^XGE:SWESE001.GRF^FS
^FO440,0^XGE:SWESE000.GRF^FS
^FO0,70^FB550,50,0,C,0^AQN,25,30^FDSpraynozzle 50mm^FS
^FO0,130^BY2^BCN,30,Y,Y,N,N^FDS/N:941001-0114-0001^FS
^FO180,170^AQN,23,20^FDwww.swepro.com^FS
^XZ
誰かがそれを探している場合に備えて、私は自分の解決策を投稿しています。 E_Sが言及しているように、バーコードをラベルの中央に配置するには、次の手順に従ってコードでバーコードを計算する必要があります。
(^BY2)
_(eg: 8 dots / mm)
_を知る必要があります。したがって、_80 mm
_ワイドラベルがある場合は、_80 * 8 = 640 dots
_(">:", ">5", etc.)
_は1文字としてカウントされ、_mode C
_の文字はペアで格納されることに注意してください。 _mode C
_の詳細については、 http://en.wikipedia.org/wiki/Code_128 を参照してください。>:S/N:941001-0114-0001
_の場合、[開始コードB] + [20文字] + [チェックディジット] = 22をカウントする必要があります>:S/N:>5941001>6->50114>6->50001
_の場合、_[start code B] + [4 characters for 'S/N:'] + [mode C invocation] + [3 characters for '941001'] + [mode B invocation] + [1 characters for '-'] + [mode C invocation] + [2 characters for '0114'] + [mode B invocation] + [1 characters for '-'] + [mode C invocation] + [2 characters for '0001'] + [check digit] = 20
_を数える必要がありますstop code
_を除くすべての文字です。((chars counted [22 or 20] * 11) + (stop char * 13)) * narrow bar width = 510 dots or 466 dots
_round((label width - barcode width) / 2)
を実行し、それを使用して_^FT
_でバーコードを配置するだけです。それでおしまい!それが誰かを助けることを願っています!
コードを中央揃えにするZPLコマンドはありません。 ZPLを生成するプログラムは、コードのサイズと座標を使用した位置に基づいて位置を自動計算する必要があります。
この問題のもう1つの解決策は、Nicolas Garfinkielほどエレガントではありませんが、はるかに簡単です。次の解決策があります。
基本的に、Code 128の問題は、幅が可変であるということです。しかし、実際の状況では、私たちはとにかく固定幅として使用します。これには説明が必要です。コードをどこかに配置し、expect幅がいくつかより広くない場合、収まりませんand許可されているスペースを予約(空のまま)する必要があります埋める。したがって、幅が可変であっても、常にラベルの領域に割り当てる必要があります固定。
したがって、センタリングの問題の解決策は、Code128を固定長にすることです。
これがサブセットC(数字のペア)の場合、次のものが必要です。
たとえば、コードが94100101140001の場合、10 ^ 16で追加すると、次のようになります。
10000000000000000
94100101140001
=================
10094100101140001
したがって、コードは固定幅になり、ハードセンターにすることができます。
コードがサブセットCでなく、テキストが含まれている場合は、(擬似コードで)次のようにします。
my_code = "S/N:941001-0114-0001"
const_max_code_length = 24 (for example)
if my-code.length > const_max_code_length then error
padding_char = "="
result = ""
for (0..(const_max_code_length - my_code.length)) do
result += padding_char
end_for
result += my_code
コードの場合、次のように生成されます。
====S/N:941001-0114-0001
そうすれば、どのテキストを入力しても、常に固定長になるため、一貫して配置されます。
この投稿を見つける前に、私はそれを自分で使用しました。それは大丈夫ではありません、それはハックです、そしてニコラス・ガーフィンキエルが提案したことはより正しいです。ただし、最も適切な解決策は、ZPL自体がコードのセンタリングをサポートする場合ですが、残念ながらサポートしていません。