ZPL – Zebra Programming Language – язык описания печатных страниц, так называемый PDL (Page Description Language). Существует множество PDL. Практически каждый производитель принтеров имеет свой язык описания страниц. Такой язык позволяет описать страницу высокоуровневыми командами, которые будут интерпретированы принтером в низкоуровневые. Наиболее известный PDL – PostScript от компании Adobe. PDL позволяет описывать страницу объектами. Что делает программу не зависимой от конкретной аппаратной платформы печатающего устройства. Принтер получает команды на печать квадрата, символа или линии и нас не волнует, как это будет реализовано. Принтер сам знает, как это сделать. Вот в чем главное достоинство PDL.
Американская компания Zebra Technologies разработала ZPL главным образом для создания и печати этикеток. Этикетки могут содержать текст, штрих коды и простую графику. Такие этикетки печатаются специальными Zebra принтерами, которые применяются в торговле для печати квитанций и чеков.
Существует два стандарта: ZPL и ZPL ll.
Отличия
Основной причиной развития ZPL II было существенное сокращение времени между тем, когда принтер начинает получать данные и когда первый символ поступит на печатать. Это было сделано прежде всего путем изменения способа написания программ ZPL.
Стандарт ZPL II совместим со стандарт ZPL не на 100%. Но различия между ZPL II и ZPL минимальны. И, уже существующие программы на ZPL можно с легкостью модифицировать до уровня ZPL ll. Есть и обратная совместимость. То есть вы можете писать программы на ZPL ll под принтеры ZPL, естественно учитывая старый синтаксис.
Итак, вот два основных отличия между ZPL ll и ZPL:
1. В ZPL II данные форматируются сразу же как получены. А в стандартном ZPL форматирование не начнется пока не будет получена команда завершения форматирования ^XZ.
2. В ZPL ll появилось много новых команд:
^ JM, ^ LH, ^ LL, ^ LR, ^ LS, ^ PM, ^ PO, ^ PR и ^ PF
Синтаксис
Но, рассматривать язык программирования без примеров пустое занятие. Поэтому, я приведу код программы для печати простой этикетки, и мы рассмотрим синтаксис.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
^XA ^FX Top section with company logo, name and address. ^CF0,60 ^FO55,55^GC100^FS ^FO75,55^GC100^FS ^FO75,75^GC100^FS ^FO55,75^GC100^FS ^FO88,88^GC50,50^FS ^FO220,50^FDLorem Ipsum, Inc.^FS ^CF0,40 ^FO220,100^FD1000 Shipping Lane^FS ^FO220,135^FDShelbyville TN 38102^FS ^FO220,170^FDEURO UNION (EU)^FS ^FO50,250^GB700,1,3^FS ^FX Second section with recipient address and permit information. ^CFA,30 ^FO50,300^FDKarl Marks^FS ^FO50,340^FD100 Main Street^FS ^FO50,380^FDEURO UNION (EU)^FS ^CFA,15 ^FO50,450^GB700,1,3^FS ^FX Third section with barcode. ^BY5,2,120 ^FO175,500^BC^FD1234567890^FS ^FX Fourth section (the two boxes on the bottom). ^FO50,700^GB700,250,3^FS ^FO400,700^GB1,250,3^FS ^CF0,40 ^FO100,760^FDShipping Ctr. Y74H-1^FS ^FO100,800^FDREF1 F99L17^FS ^FO100,840^FDREF2 YUH88^FS ^CF0,190 ^FO485,765^FDAA^FS ^XZ |
И получим в итоге такой талон для контроля доставки:
Как видите код начинается с тэга (команды) ^XA и заканчивается тэгом ^XZ. Код разделен комментариями на четыре секции для удобства рассмотрения.
1) В первой секции выводится логотип компании и ее юридические данные:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
^FX Top section with company logo, name and address. ^CF0,60 ^FO55,55^GC100^FS ^FO75,55^GC100^FS ^FO75,75^GC100^FS ^FO55,75^GC100^FS ^FO88,88^GC50,50^FS ^FO220,50^FDLorem Ipsum, Inc.^FS ^CF0,40 ^FO220,100^FD1000 Shipping Lane^FS ^FO220,135^FDShelbyville TN 38102^FS ^FO220,170^FDEURO UNION (EU)^FS ^FO50,250^GB700,1,3^FS |
Понятно, что тэг ^FX означает комментарий.
^CF x, y, z – настройки шрифта по умолчанию: шрифт, высота и ширина.
^FO x,y - отступ слева и сверху.
^FS – конец строки.
Далее рисуем логотип из четырех кругов:
^GC x,y – нарисовать круг. Диаметр – x, толщина рамки – y.
Данные о компании:
^FD – поле данных.
2) Во второй секции новых тегов нам не попадается.
3) В третьей секции мы добавляем штрих код:
1 2 3 |
^FX Third section with barcode. ^BY5,2,120 ^FO175,500^BC^FD1234567890^FS |
Здесь:
^BY x,y,z – ширина, ширина полос, высота.
4) В четвертой секции появился еще один тэг:
^GB x,y,z – прямоугольник. Ширина, высота, толщина рамки.
Вот таким небольшим набором тэгов мы описали всю печатную страницу. Согласитесь, ничего сложного. Нужно просто подбирать расстояние в точках. Все измерения тут именно в точках.
Конечно, мы рассмотрели очень малую часть команд ZPL, но теперь у вас есть некоторое представление об этом языке.
В интернете есть множество онлайн интерпретаторов ZPL кода. Так что вы всегда можете протестировать его визуально.