Как печатать этикетки с помощью TSPL и JavaScript

Как печатать этикетки с помощью TSPL и JavaScript

26 мая 2022 г.

Принтеры этикеток могут поддерживать такие языки программирования, как TSPL, ZPL, EPL и т. д. Сегодня мы рассмотрим язык TSPL. Мы можем создавать метки, используя команды TSPL, такие как «TEXT», «BARCODE» и «QRCODE». Например, если мы хотим напечатать этикетку с текстом и штрих-кодом, мы используем эти команды с их свойствами, такими как положение или размер, и отправляем эти команды на принтер этикеток через Bluetooth или последовательное соединение.



С левой стороны вы можете видеть команды TSPL и напечатанную этикетку с правой стороны. Вы можете найти все доступные команды [здесь] (http://www.kroyeuropedownload.com/English_User_Manuals/TSPL_TSPL2_Programming_Jan_2017.pdf), но давайте рассмотрим некоторые из них, чтобы понять, как использовать TSPL.


Координаты и размер в точках


Будь то ТЕКСТ, ШТРИХ-КОД или БИТМАП, как правило, координаты и размер указываются точками. Количество точек на дюйм зависит от разрешения принтера.


Например, если принтер


  • 203 DPI → означает, что в одном дюйме 203 точки, или в 1 мм 8 точек.

  • 300 точек на дюйм → означает, что на один дюйм приходится 300 точек, или на 1 мм приходится 11,8 точек.

В соответствии с этим, если мы хотим добавить штрих-код высотой 10 мм, а принтер имеет разрешение 203 DPI, то мы должны установить высоту 80 (10 мм x 8 = 80 точек).


Размер и зазор этикетки


Нам нужно сообщить принтеру размер этикетки следующим образом:


РАЗМЕР 4,1


Здесь мы сказали, что размер этикетки 4x1 дюйм.


Мы также можем установить его в метрической системе (мм):


РАЗМЕР 50 мм,25 мм


Мы можем установить зазор, который представляет собой расстояние между метками (GAP m,n).


РАЗРЫВ 0,0


Здесь зазор равен нулю дюймов, что означает, что это непрерывная этикетка.



Текст


Мы можем использовать команду TEXT для печати текста на этикетке. Мы можем указать положение, размер шрифта, поворот и так далее:


ТЕКСТ x,y,"шрифт",поворот,x-умножение,y-умножение,[выравнивание,] "содержимое"


| Параметр | Описание |


| х, у | x и y-координата |


| шрифт | Как правило, мы можем установить 1-8 (1-маленький, 2-больше… 8-самый большой) |


| вращение | 0, 90, 180, 270 по часовой стрелке |


| x и y-умножение | Масштабный коэффициент 1-10 |


| выравнивание | 1-левый, 2-центральный, 3-правый (опционально) |


| содержание | Текстовое содержимое |


| Примеры команд | Результат |


| ТЕКСТ 10,20,"1",0,1,1,"ШРИФТ 1"
ТЕКСТ 10,70,"2",0,1,1,"ШРИФТ 2"
ТЕКСТ 10,120,"3",0,1,1,0,"ШРИФТ 3" | |


Штрих-код


Мы можем добавить штрих-код на этикетку с помощью команды BARCODE:


ШТРИХКОД X,Y,”тип кода”,высота,удобочитаемый,поворот,узкий,широкий,[выравнивание,]”содержимое”


| Параметр | Описание |


| х, у | x и y-координата |


| тип кода | 128, EAN128, EAN13… |


| высота | Высота в точках |


| удобочитаемый | 0 - значение штрих-кода (текст) не видно
1 - текст выравнивается по левому краю
2 - выравнивается по центру
3 - выравнивается по правому краю |


| вращение | 0, 90, 180, 270 по часовой стрелке |


| узкий | Ширина узкого элемента в точках |


| широкий | Ширина широкого элемента в точках |


| выравнивание | 1-левый, 2-центральный, 3-правый (опционально) |


| содержание | Содержание штрих-кода |


Примеры команд:


ТЕКСТ 10,10, "2",0,1,1, "Человекочитаемое выравнивание"
ШТРИХКОД 10,50, "128",100,1,0,2,2,"левый" < br> ШТРИХКОД 310,50, "128",100,2,0,2,2,"центр"
ШТРИХКОД 610,50, "128",100,3,0,2,2," правильно"


Результат:



Команды PRINT и END


После создания этикетки нам нужно сообщить принтеру, что этикетка готова к печати. Для этого мы используем команду PRINT m[,n]:


| Команды | Описание |


| РАЗМЕР 50 мм,25 мм
CLS
ТЕКСТ 10,10, "2",0,1,1, "Текст 1"
ПЕЧАТЬ 1

> CLS
TEXT 10,10, "2",0,1,1, "Text 2"
PRINT 2
END | - Установить размер этикетки
- Очистить буфер
- Добавить текст
- Напечатать буфер дважды

- Очистить буфер
- Добавить текст
- Печать буфер один раз
- Конец программы |


Он печатает три этикетки; одна этикетка с «Текст 1» и две этикетки с «Текст 2».


Мы добавляем команду END в конце, чтобы сообщить принтеру, что мы закончили печать. Без этой команды принтер может не напечатать последнее изображение в буфере.


Печать с помощью JavaScript (Node.js)


Сгенерированные команды можно отправлять на принтер через последовательный порт или Bluetooth. Чтобы продемонстрировать это, я создал простой код, используя Node.js. Я использовал пакет «usb» для подключения и отправки команд (в Windows вам может потребоваться установить драйвер, чтобы узнать больше, посетите страницу пакета ).


```javascript


const usb = требуется ('usb');


константа cmds = [


'РАЗМЕР 48 мм, 25 мм',


'КЛС',


'ТЕКСТ 10,10,"4",0,1,1,"HackerNoon"',


'ШТРИХ-КОД 10,60,"128",90,1,0,2,2,"altospos.com"',


'ПЕЧАТЬ 1',


'КОНЕЦ',


// вы можете получить все доступные устройства с помощью usb.getDeviceList()


let device = usb.findByIds(/vid/8137, /pid/8214);


устройство.открыть();


устройство.интерфейсы[0].claim();


const outEndpoint = device.interfaces[0].endpoints.find(e => e.direction === 'out');


outEndpoint.transferType = 2;


outEndpoint.transfer(Buffer.from(cmds.join('\r
')), (ошибка) => {


устройство.закрыть();


И результат:



Мне пришлось по крупицам собирать информацию о печати этикеток, когда я реализовывал эту функцию в проекте Alto's POS & Inventory. Поэтому я написал эту статью в надежде, что она станет отправной точкой для кого-то в похожей ситуации.


Не было войны! ✋🏽



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE