Como imprimir etiquetas com TSPL e JavaScript by@altynberg
4,122 leituras

Como imprimir etiquetas com TSPL e JavaScript

2022/05/26
por @altynberg 4,122 leituras
tldt arrow
PT
Read on Terminal Reader

Muito longo; Para ler

As impressoras de etiquetas podem suportar linguagens de programação como TSPL, ZPL, EPL e assim por diante. Podemos construir etiquetas usando comandos T SPL como `BARCODE` e `QRCODE. Por exemplo, se queremos imprimir uma etiqueta com texto e código de barras, usamos esses comandos com suas propriedades como posição ou tamanho e enviamos esses comandos para a impressora de etiquetas por Bluetooth ou conexão serial. O número de pontos por polegada depende do DPI da impressora.

Company Mentioned

Mention Thumbnail
featured image - Como imprimir etiquetas com TSPL e JavaScript
Altynbek Usenbekov HackerNoon profile picture

@altynberg

Altynbek Usenbekov

Software Developer | Co-founder of Alto's POS

Cerca de @altynberg
LEARN MORE ABOUT @ALTYNBERG'S EXPERTISE AND PLACE ON THE INTERNET.
react to story with heart

As impressoras de etiquetas podem suportar linguagens de programação como TSPL, ZPL, EPL e assim por diante. Hoje vamos fazer uma visão geral da linguagem TSPL. Podemos construir etiquetas usando comandos TSPL como TEXT , BARCODE e QRCODE . Por exemplo, se queremos imprimir uma etiqueta com texto e código de barras, usamos esses comandos com suas propriedades como posição ou tamanho e enviamos esses comandos para a impressora de etiquetas por Bluetooth ou conexão serial.

image

No lado esquerdo, você pode ver os comandos TSPL e a etiqueta impressa no lado direito. Você pode encontrar todos os comandos disponíveis aqui , mas vamos ver alguns deles para entender como usar o TSPL.

Coordenadas e tamanho em pontos

Seja um TEXT , BARCODE ou BITMAP , geralmente as coordenadas e o tamanho são em pontos. O número de pontos por polegada depende do DPI da impressora.

Por exemplo, se a impressora estiver

  • 203 DPI → significa que há 203 pontos em uma polegada ou 8 pontos em 1 mm.
  • 300 DPI → significa que há 300 pontos em uma polegada ou 11,8 pontos em 1 mm.

De acordo com isso, se quisermos adicionar um código de barras com altura de 10 mm e a impressora for 203DPI, devemos definir a altura como 80 (10 mm x 8 = 80 pontos).

Tamanho e folga da etiqueta

Precisamos informar à impressora o tamanho da etiqueta assim:

SIZE 4,1

Aqui dissemos que o tamanho da etiqueta é 4x1 polegadas.

Também podemos configurá-lo em um sistema métrico (mm):

SIZE 50 mm,25 mm

Podemos definir o intervalo que é o espaço entre os rótulos ( GAP m,n ).

GAP 0,0

Aqui, a lacuna é de zero polegadas, o que significa que é uma etiqueta contínua.

image

Texto

Podemos usar o comando TEXT para imprimir um texto na etiqueta. Podemos fornecer a posição, tamanho da fonte, rotação e assim por diante:

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

Parâmetro

Descrição

x, y

coordenada x e y

Fonte

Geralmente, podemos definir 1-8 (1-pequeno, 2-maior… 8-maior)

rotação

0, 90, 180, 270 no sentido horário

x e y-multiplicação

Fator de escala 1-10

alinhamento

1-esquerda, 2-centro, 3-direita (opcional)

contente

conteúdo de texto

Exemplos de comandos

Resultado

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"

image

código de barras

Podemos adicionar um código de barras à etiqueta com o comando BARCODE :

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

Parâmetro

Descrição

x, y

coordenada x e y

tipo de código

128, EAN128, EAN13…

altura

Altura em pontos

legível por humanos

0 - o valor do código de barras (texto) não é visível
1 - o texto é alinhado à esquerda
2 - alinhado ao centro
3 - alinhado à direita

rotação

0, 90, 180, 270 no sentido horário

estreito

Largura do elemento estreito em pontos

largo

Largura do elemento largo em pontos

alinhamento

1-esquerda, 2-centro, 3-direita (opcional)

contente

Conteúdo do código de barras

Exemplos de comandos:

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"

Resultado:

image

Comandos IMPRIMIR e FIM

Depois de construir a etiqueta, precisamos informar à impressora que a etiqueta está pronta para ser impressa. Usamos o comando PRINT m[,n] para fazer isso:

Comandos

Descrição

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

- Defina o tamanho da etiqueta
- Limpe o buffer
- Adicione texto
- Imprima o buffer uma vez

- Limpe o buffer
- Adicione texto
- Imprima o buffer duas vezes
- Fim do programa

Imprime três etiquetas; uma etiqueta com “Texto 1” e duas etiquetas com “Texto 2”.

Adicionamos o comando END no final, para informar à impressora que terminamos de imprimir. Sem esse comando, a impressora pode não imprimir a última imagem no buffer.

Imprimindo com JavaScript (Node.js)

Os comandos gerados podem ser enviados para a impressora via Serial ou Bluetooth. Para demonstrar isso, criei um código simples usando Node.js. Usei o pacote ' usb ' para conectar e enviar os comandos (No Windows, pode ser necessário instalar um driver, para saber mais visite a página do pacote ).

 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(); });

E o resultado:

image


Tive que reunir informações peça por peça sobre a impressão de etiquetas quando implementei esse recurso no projeto POS & Inventory da Alto . Então, escrevi este artigo na esperança de que seja o ponto de partida para alguém em uma situação semelhante.

Sem guerra! ✋🏽

HISTÓRIAS RELACIONADAS

L O A D I N G
. . . comments & more!
Hackernoon hq - po box 2206, edwards, colorado 81632, usa