paint-brush
Comment imprimer des étiquettes avec TSPL et JavaScriptpar@altynberg
23,965 lectures
23,965 lectures

Comment imprimer des étiquettes avec TSPL et JavaScript

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

Trop long; Pour lire

Les imprimantes d'étiquettes peuvent prendre en charge des langages de programmation tels que TSPL, ZPL, EPL, etc. Nous pouvons créer des étiquettes à l'aide de commandes T SPL telles que `BARCODE` et `QRCODE. Par exemple, si nous voulons imprimer une étiquette avec un texte et un code-barres, nous utilisons ces commandes avec leurs propriétés telles que la position ou la taille, et envoyons ces commandes à l'imprimante d'étiquettes via une connexion Bluetooth ou série. Le nombre de points par pouce dépend du DPI de l'imprimante.

Company Mentioned

Mention Thumbnail
featured image - Comment imprimer des étiquettes avec TSPL et JavaScript
Altynbek Usenbekov HackerNoon profile picture

Les imprimantes d'étiquettes peuvent prendre en charge des langages de programmation tels que TSPL, ZPL, EPL, etc. Aujourd'hui, nous allons faire un survol du langage TSPL. Nous pouvons créer des étiquettes à l'aide de commandes TSPL telles que TEXT , BARCODE et QRCODE . Par exemple, si nous voulons imprimer une étiquette avec un texte et un code-barres, nous utilisons ces commandes avec leurs propriétés telles que la position ou la taille, et envoyons ces commandes à l'imprimante d'étiquettes via une connexion Bluetooth ou série.


Sur le côté gauche, vous pouvez voir les commandes TSPL et l'étiquette imprimée sur le côté droit. Vous pouvez trouver toutes les commandes disponibles ici , mais examinons certaines d'entre elles pour comprendre comment utiliser le TSPL.

Coordonnées et taille en points

Qu'il s'agisse d'un TEXT , BARCODE ou BITMAP , généralement, les coordonnées et la taille sont en points. Le nombre de points par pouce dépend du DPI de l'imprimante.

Par exemple, si l'imprimante est

  • 203 DPI → signifie qu'il y a 203 points dans un pouce, ou qu'il y a 8 points dans 1 mm.
  • 300 DPI → signifie qu'il y a 300 points dans un pouce, ou qu'il y a 11,8 points dans 1 mm.


Selon cela, si nous voulons ajouter un code-barres d'une hauteur de 10 mm et que l'imprimante est de 203 DPI, nous devons définir la hauteur sur 80 (10 mm x 8 = 80 points).

Taille et espace de l'étiquette

Nous devons indiquer à l'imprimeur la taille de l'étiquette comme ceci :

SIZE 4,1

Ici, nous avons dit que la taille de l'étiquette est de 4x1 pouces.


Nous pouvons également le définir dans un système métrique (mm):

SIZE 50 mm,25 mm


Nous pouvons définir l'écart qui est l'espace entre les étiquettes ( GAP m,n ).

GAP 0,0

Ici, l'écart est de zéro pouce, ce qui signifie qu'il s'agit d'une étiquette continue.


Texte

Nous pouvons utiliser la commande TEXT pour imprimer un texte sur l'étiquette. Nous pouvons donner la position, la taille de la police, la rotation, etc. :

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

Paramètre

La description

x, y

coordonnées x et y

Police de caractère

Généralement, nous pouvons définir 1-8 (1-petit, 2-plus grand… 8-plus grand)

rotation

0, 90, 180, 270 dans le sens des aiguilles d'une montre

multiplication x et y

Facteur d'échelle 1-10

alignement

1-gauche, 2-centre, 3-droite (facultatif)

contenu

Contenu du texte


Exemples de commandes

Résultat

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"


code à barre

Nous pouvons ajouter un code-barres à l'étiquette avec la commande BARCODE :

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


Paramètre

La description

x, y

coordonnées x et y

type de code

128, EAN128, EAN13…

la taille

Hauteur en points

lisible par l'homme

0 - la valeur du code-barres (texte) n'est pas visible
1 - le texte est aligné à gauche
2 - aligné au centre
3 - aligné à droite

rotation

0, 90, 180, 270 dans le sens des aiguilles d'une montre

étroit

Largeur de l'élément étroit en points

large

Largeur de l'élément large en points

alignement

1-gauche, 2-centre, 3-droite (facultatif)

contenu

Contenu du code-barres


Exemples de commandes :

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"


Résultat:

Commandes IMPRIMER et FIN

Après avoir créé l'étiquette, nous devons dire à l'imprimante que l'étiquette est prête à être imprimée. Nous utilisons la commande PRINT m[,n] pour faire ceci :

Commandes

La description

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

- Définir la taille de l'étiquette
- Effacer le tampon
- Ajouter du texte
- Imprimer le tampon une fois

- Effacer le tampon
- Ajouter du texte
- Imprimer le tampon deux fois
- Fin de programme


Il imprime trois étiquettes ; une étiquette avec "Texte 1" et deux étiquettes avec "Texte 2".


Nous ajoutons la commande END à la fin, pour dire à l'imprimante que nous avons fini d'imprimer. Sans cette commande, l'imprimante risque de ne pas imprimer la dernière image du tampon.

Impression avec JavaScript (Node.js)

Les commandes générées peuvent être envoyées à l'imprimante via série ou Bluetooth. Pour le démontrer, j'ai créé un code simple en utilisant Node.js. J'ai utilisé le package ' usb ' pour me connecter et envoyer les commandes (Sous Windows, vous devrez peut-être installer un pilote, pour en savoir plus visitez la page du package ).


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


Et le résultat :




J'ai dû rassembler des informations pièce par pièce sur l'impression d'étiquettes lorsque j'implémente cette fonctionnalité sur le projet POS & Inventory d'Alto . J'ai donc écrit cet article dans l'espoir qu'il sera le point de départ pour quelqu'un dans une situation similaire.


Pas de guerre! ✋🏽