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.
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
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).
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.
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 |
---|---|
|
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 |
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:
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 |
---|---|
| - Définir la taille de l'étiquette |
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.
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! ✋🏽