paint-brush
TSPL と JavaScript を使用してラベルを印刷する方法@altynberg
24,425 測定値
24,425 測定値

TSPL と JavaScript を使用してラベルを印刷する方法

Altynbek Usenbekov2022/05/26
Read on Terminal Reader
Read this story w/o Javascript

長すぎる; 読むには

ラベル プリンターは、TSPL、ZPL、EPL などのプログラミング言語をサポートできます。 「BARCODE」や「QRCODE」などの T SPL コマンドを使用してラベルを作成できます。たとえば、テキストとバーコードを含むラベルを印刷する場合、これらのコマンドを位置やサイズなどのプロパティと共に使用し、これらのコマンドを Bluetooth またはシリアル接続を介してラベル プリンターに送信します。 1 インチあたりのドット数は、プリンターの DPI によって異なります。

Company Mentioned

Mention Thumbnail
featured image - TSPL と JavaScript を使用してラベルを印刷する方法
Altynbek Usenbekov HackerNoon profile picture

ラベル プリンターは、TSPL、ZPL、EPL などのプログラミング言語をサポートできます。今日は、TSPL 言語の概要を説明します。 TEXTBARCODEQRCODEなどの TSPL コマンドを使用してラベルを作成できます。たとえば、テキストとバーコードを含むラベルを印刷する場合、これらのコマンドを位置やサイズなどのプロパティと共に使用し、これらのコマンドを Bluetooth またはシリアル接続を介してラベル プリンターに送信します。


左側に TSPL コマンド、右側に印刷されたラベルが表示されます。使用可能なすべてのコマンドはここで見つけることができますが、TSPL の使用方法を理解するためにそれらのいくつかを見てみましょう。

ドット単位の座標とサイズ

TEXTBARCODE 、またはBITMAPのいずれであっても、通常、座標とサイズはドット単位です。 1 インチあたりのドット数は、プリンターの DPI によって異なります。

たとえば、プリンターが

  • 203 DPI → 1 インチに 203 ドット、または 1 mm に 8 ドットがあることを意味します。
  • 300 DPI → 1 インチに 300 ドット、または 1 mm に 11.8 ドットがあることを意味します。


これによると、高さ 10mm のバーコードを追加したい場合、プリンターが 203DPI の場合、高さを80 (10mm x 8 = 80 ドット) に設定する必要があります。

ラベルのサイズとギャップ

次のように、ラベルのサイズをプリンターに伝える必要があります。

SIZE 4,1

ここでは、ラベルのサイズは 4x1 インチであると述べました。


メートル法 (mm) で設定することもできます。

SIZE 50 mm,25 mm


ラベル間のスペースであるギャップを設定できます ( GAP m,n )。

GAP 0,0

ここで、ギャップは 0 インチです。これは、連続したラベルであることを意味します。


文章

TEXTコマンドを使用して、ラベルにテキストを印刷できます。位置、フォント サイズ、回転などを指定できます。

TEXT x,y,“font”,rotation,x-multiplication,y-multiplication,[alignment,] “content”

パラメータ

説明

x、y

x および y 座標

フォント

通常、1 ~ 8 を設定できます (1 は小さい、2 は大きい… 8 は大きい)。

回転

時計回りに0、90、180、270

x と y の乗算

倍率 1 ~ 10

アラインメント

1-左、2-中央、3-右 (オプション)

コンテンツ

テキストの内容


サンプル コマンド

結果

TEXT 10,20,"1",0,1,1,"FONT 1"
TEXT 10,70,"2",0,1,1,"FONT 2"
TEXT 10,120,"3",0,1,1,0,"FONT 3"


バーコード

BARCODEコマンドを使用して、ラベルにバーコードを追加できます。

BARCODE X,Y,”code type”,height,human-readable,rotation,narrow,wide,[alignment,]”content”


パラメータ

説明

x、y

x および y 座標

コードタイプ

128、EAN128、EAN13…

身長

ドットの高さ

人間が読める

0 - バーコード値 (テキスト) は表示されません
1 - テキストは左揃え
2 - 中央揃え
3 - 右揃え

回転

時計回りに0、90、180、270

狭い

ドット単位の狭い要素の幅

幅の広い要素の幅 (ドット単位)

アラインメント

1-左、2-中央、3-右 (オプション)

コンテンツ

バーコードの内容


サンプル コマンド:

TEXT 10,10, "2",0,1,1, "Human readable alignment"
BARCODE 10,50, "128",100,1,0,2,2,"left"
BARCODE 310,50, "128",100,2,0,2,2,"center"
BARCODE 610,50, "128",100,3,0,2,2,"right"


結果:

PRINT および END コマンド

ラベルを作成したら、ラベルを印刷する準備が整ったことをプリンターに伝える必要があります。 PRINT m[,n]コマンドを使用してこれを行います。

コマンド

説明

SIZE 50 mm,25 mm
CLS
TEXT 10,10, "2",0,1,1, "Text 1"
PRINT 1

CLS
TEXT 10,10, "2",0,1,1, "Text 2"
PRINT 2
END

- ラベルのサイズを設定
- バッファをクリア
- テキストを追加
- バッファを一度印刷する

- バッファをクリア
- テキストを追加
- バッファを 2 回印刷する
- プログラムの終了


3 つのラベルを印刷します。 「テキスト 1」の 1 つのラベルと「テキスト 2」の 2 つのラベル。


最後にENDコマンドを追加して、印刷が終了したことをプリンターに伝えます。このコマンドがないと、プリンターはバッファー内の最後のイメージを印刷しない場合があります。

JavaScript(Node.js)で印刷する

生成されたコマンドは、シリアルまたは Bluetooth 経由でプリンターに送信できます。これを実証するために、Node.js を使用して簡単なコードを作成しました。 「 usb 」パッケージを使用して接続し、コマンドを送信しました (Windows では、ドライバーをインストールする必要がある場合があります。詳細については、パッケージのページを参照してください)。


 const usb = require('usb'); const cmds = [ 'SIZE 48 mm,25 mm', 'CLS', 'TEXT 10,10,"4",0,1,1,"HackerNoon"', 'BARCODE 10,60,"128",90,1,0,2,2,"altospos.com"', 'PRINT 1', 'END', ]; // you can get all available devices with usb.getDeviceList() let device = usb.findByIds(/*vid*/8137, /*pid*/8214); device.open(); device.interfaces[0].claim(); const outEndpoint = device.interfaces[0].endpoints.find(e => e.direction === 'out'); outEndpoint.transferType = 2; outEndpoint.transfer(Buffer.from(cmds.join('\r\n')), (err) => { device.close(); });


そして結果:




この機能をAlto の POS & Inventoryプロジェクトに実装するとき、ラベルの印刷に関する情報を少しずつ収集する必要がありました。ですから、同じような状況にある誰かの出発点になることを願って、この記事を書きました。


戦争反対! ✋🏽