Проєктування етикеток Zebra (ZPL)

Принтери етикеток Zebra не розуміють звичайних документів. Натомість вони зчитують невеликий набір текстових команд під назвою ZPL (мова програмування Zebra). Дизайн ZPL — це просто блок тексту, який вказує принтеру, що розміщувати на етикетці та де саме: рядок тексту тут, ціну там, QR-код у куті.

Ця сторінка пояснює ZPL з нуля, щоб Ви могли читати, редагувати та створювати власні етикетки продуктів без сторонньої допомоги. Дизайн етикетки створюється в розділі Налаштування ‣ Принтери, у полі Користувацький дизайн етикетки продукту Zebra (див. Налаштування принтера).

Порада

Рідко доводиться починати з порожньої сторінки. Gem Logic надає кожній етикетці робочий дизайн за замовчуванням. Найшвидший спосіб навчитися — відкрити цей стандартний дизайн, змінити щось одне, зберегти та подивитися на зображення попереднього перегляду. Повторюйте, поки не виглядатиме правильно.

Швидкий старт

  1. Перейдіть до Налаштування ‣ Принтери та знайдіть поле Користувацький дизайн етикетки продукту Zebra.

  2. Внесіть невелику зміну (наприклад, перемістіть рядок або збільште ціну).

  3. Натисніть Зберегти. Gem Logic автоматично створить зображення попереднього перегляду етикетки.

  4. Перегляньте попередній перегляд. Якщо є помилки, відкоригуйте та збережіть знову.

Під час експериментів нічого не надсилається на справжній принтер — попередній перегляд створюється на основі Вашого дизайну, тож Ви можете безпечно вносити зміни перед друком першої етикетки.

Як побудована етикетка ZPL

Кожна етикетка починається з ^XA та закінчується ^XZ. Все, що між ними, описує етикетку. Команда завжди починається з каретки ^ (або іноді тильди ~).

^XA            (start of the label)
... commands that build the label ...
^XZ            (end of the label)

Всередині найпоширеніший шаблон — «перейти до позиції, потім щось роздрукувати там»:

^FO50,30^FDHello^FS

Цей один рядок означає: перейти до позиції 50,30 і роздрукувати текст "Hello". Розбиття:

  • ^FO50,30Field Origin: перехід до x=50, y=30 (верхній лівий кут того, що йде далі).

  • ^FDHelloField Data: фактичний вміст для друку.

  • ^FSField Separator: позначає кінець цієї частини. Завжди закривайте поле за допомогою ^FS.

Це 90% проєктування етикеток: серія рядків «позиція + вміст», розміщених один за одним.

Розмір етикетки, точки та міліметри

Принтери Zebra вимірюють все в точках, а не в міліметрах. Більшість принтерів для етикеток друкують при 203 DPI, що означає:

  • 1 мм ≈ 8 точок

  • 1 дюйм = 203 точки

Отже, етикетка шириною 56 мм і висотою 13 мм становить приблизно 448 точок у ширину і 104 точки у висоту.

Дві команди встановлюють область друку:

  • ^PWPrint Width, ширина друку, у точках.

  • ^LLLabel Length, довжина етикетки (висота), у точках.

^PW448        (label is 448 dots wide ≈ 56 mm)
^LL104        (label is 104 dots tall ≈ 13 mm)

Важливо

Фізичний розмір етикетки також визначається полями Ширина етикетки продукту та Довжина етикетки продукту поряд із дизайном. Тримайте їх синхронізованими з Вашими фактичними запасами етикеток. Змінна {label_length} заповнюється автоматично з поля довжини, тому стандартний дизайн використовує ^LL{label_length}.

Позиціонування: координатна сітка

Уявіть етикетку як сітку. Точка 0,0 — це верхній лівий кут. Перше число — x (наскільки праворуч), а друге — y (наскільки вниз), обидва в точках.

^FO0,0        top-left corner
^FO200,0      200 dots to the right, same height
^FO0,40       left edge, 40 dots down

Щоб перемістити елемент, змініть його числа ^FO. Більше x = далі праворуч; більше y = далі вниз. Саме так Ви розміщуєте SKU на одному рядку, а метал на наступному: надайте їм однакове x, але більше y на другому рядку.

Додавання та зміна розміру тексту

Перед друком тексту Ви зазвичай обираєте розмір шрифту. Найпростіший спосіб — це ^CF0,h (Change default Font, змінити шрифт за замовчуванням), де h — це висота символів у точках:

^CF0,28               use ~28-dot-tall text from here on
^FO50,30^FDPrice^FS   print "Price" at 50,30 in that size

Кожен ^FD ... ^FS після ^CF використовує цей розмір, доки Ви не встановите інший. Тож щоб змішати розміри на одній етикетці, встановіть ^CF0,28 перед великим текстом і ^CF0,14 перед малим текстом.

Порада

Щоб додати новий рядок тексту, Ви не натискаєте Enter — Ви додаєте інше позиційоване поле нижче. Скопіюйте існуючий рядок, надайте йому більше значення y і змініть його вміст.

Вставка даних продукту

Дизайн етикетки повторно використовується для кожного продукту, тому Ви не вводите SKU чи ціну вручну. Замість цього Ви вставляєте змінні у фігурних дужках, і Gem Logic замінює їх реальними даними кожного продукту під час друку етикетки.

^FO1,8^FD{item_sku}^FS          prints this product's SKU
^FO180,50^FD{currency}{price}^FS prints e.g. €129

Ті самі змінні відображаються як клікабельні значки безпосередньо під полем дизайну в додатку, тож Ви можете бачити, які з них доступні під час редагування.

Доступні змінні

Продукт

  • {brand}: назва бренду

  • {product_title}: назва продукту

  • {item_sku}: SKU продукту

  • {ean_code}: штрихкод EAN (використовується для QR-коду)

  • {price} і {currency}: ціна та символ валюти

  • {serial_number}: серійний номер

  • {year_of_manufacture}: рік виробництва

  • {supplier_product_reference}: продуктова референція постачальника

  • {supplier_reference}: референція постачальника

Матеріали та дорогоцінні камені

  • {material_1} до {material_5}: повний опис матеріалу (вага, назва та деталі дорогоцінного каменю)

  • {material_only_1} до {material_only_5}: лише назва матеріалу або дорогоцінного каменю

Атрибути

  • {attribute_1} до {attribute_5}: атрибут у форматі назва: значення

  • {attribute_name_1} до {attribute_name_5}: лише назва атрибута

  • {attribute_value_1} до {attribute_value_5}: лише значення атрибута

Розміри

  • {weight}, {length}, {width}, {height}, {diameter}, {size}, {thickness}, {quality}

Колекції

  • {collections}: колекції, до яких належить товар

Категорії

  • {categories}: категорії, до яких належить товар, розділені комами

Країна походження

  • {country_of_origin}: країна походження товару

Чистота

  • {clarity}: чистота дорогоцінного каменю товару

Код вартості

  • {encoded_cost}: закупівельна вартість, перетворена у Ваш приватний код вартості (літери налаштовуються в Конфігурація ‣ Загальні налаштування), щоб реальна вартість не була читабельною на етикетці.

RFID (потрібно лише для етикеток із RFID-мітками)

  • {item_sku_epc_hex}: SKU, закодований як значення EPC для RFID-чіпа

  • {item_sku_epc_word_count}: довжина EPC, що використовується командою ZPL RFID

Макет

  • {label_length}: заповнюється автоматично з налаштування довжини етикетки

QR-коди та штрихкоди

QR-код додається за допомогою ^BQN, за яким іде поле даних, що починається з QA,:

^FO0,30^BQN,2,2^FDQA,{ean_code}^FS
  • ^FO0,30 — позиція QR-коду.

  • ^BQN,2,2 — QR-код. Останнє число — це розмір (збільшення). Збільште його (3, 4, 5…), щоб отримати більший, зручніший для сканування код; зменште, щоб заощадити місце.

  • ^FDQA,{ean_code}^FS — дані всередині коду. Тут кодується EAN товару.

Для класичного одновимірного штрихкоду використовуйте ^BCN (Code 128):

^FO20,20^BCN,60,Y,N,N^FD{ean_code}^FS

60 — це висота штрихкоду в точках, а Y друкує читабельне число знизу.

Типовий шаблон з поясненнями

Це початковий шаблон, який надає Gem Logic, з поясненнями рядок за рядком. Його прочитання — найшвидший спосіб зрозуміти, як всі елементи взаємодіють.

^XA
^MD20
^CI28
^LL{label_length}
^LH0,0
^CF0,18
^FO180,8^FD{brand}^FS
^CF0,14
^FO50,45^FD{material_2}^FS
^FO50,60^FD{material_3}^FS
^FO180,27^FD{material_1}^FS
^CF0,28
^FO180,50^FD{currency}{price}^FS
^CF0,16
^FO1,8^FD{item_sku}^FS
^FO1,23^FD{supplier_product_reference}^FS
^FO50,60^FD{supplier_reference}^FS
^FO0,30^BQN,2,2
^FDQA,{ean_code}^FS
^XZ

Рядок за рядком:

  • ^XA — початок етикетки.

  • ^MD20 — інтенсивність друку. Збільште значення, якщо етикетки виглядають блідими, зменште, якщо текст розмитий.

  • ^CI28 — кодування символів, щоб та діакритичні знаки друкувалися правильно.

  • ^LL{label_length} — висота етикетки, заповнюється автоматично згідно з налаштуванням довжини.

  • ^LH0,0 — початкова позиція: початок координат розташований у верхньому лівому куті.

  • ^CF0,18 — розмір тексту ~18 точок для рядків, що йдуть далі.

  • ^FO180,8^FD{brand}^FS — бренд, біля верху.

  • ^CF0,14 — менший текст відтепер.

  • ^FO50,45^FD{material_2}^FS, ^FO50,60^FD{material_3}^FS, ^FO180,27^FD{material_1}^FS — три матеріали.

  • ^CF0,28 — більший текст для ціни.

  • ^FO180,50^FD{currency}{price}^FS — ціна, наприклад €129.

  • ^CF0,16 — середній текст.

  • ^FO1,8^FD{item_sku}^FS — SKU, зверху зліва.

  • ^FO1,23^FD{supplier_product_reference}^FS — артикул постачальника.

  • ^FO50,60^FD{supplier_reference}^FS — посилання на постачальника.

  • ^FO0,30^BQN,2,2 потім ^FDQA,{ean_code}^FS — QR-код (знизу зліва) та його дані (EAN).

  • ^XZ — кінець етикетки.

Попередження

ZPL не підтримує рядкові коментарі — не використовуйте крапку з комою ; для додавання нотаток. ZPL розуміє лише команди, що починаються з ^ (або ~), тому все, що йде після ;, читається як частина значення команди (або як сторонні дані етикетки). Саме це спричиняє помилки на кшталт «Value „20;“ is not a valid number» або «Ignored unrecognized content», а випадкова ; може непомітно зсунути або зламати Ваш макет.

Щоб залишити нотатку, використовуйте команду коментаря ^FX, закриту за допомогою ^FS. Принтер ігнорує все, що всередині неї:

^FX brand, near the top ^FS
^FO180,8^FD{brand}^FS

Єдине правило: коментар ^FX не може містити ^ або ~ — ці символи завершують коментар і запускають наступну команду.

Поширені зміни

Збільшити ціну

Знайдіть ^CF0,28 перед рядком {price} і збільште число, наприклад ^CF0,40.

Перемістити елемент

Змініть його числа ^FO. Щоб зсунути бренд униз, збільште друге число в ^FO180,8 (8).

Додати новий рядок тексту

Скопіюйте рядок ^FO…^FD…^FS, надайте йому більше значення y, щоб він розташувався нижче, та змініть вміст або змінну.

Збільшити QR-код

Збільште останнє число в ^BQN,2,2 (спробуйте ^BQN,3,3). Якщо він обрізається, надайте йому більше місця або перемістіть його ліворуч/вгору за допомогою його ^FO.

Додати роздільну лінію

Використовуйте графічний блок. ^FO0,40^GB540,2,2^FS малює тонку горизонтальну лінію шириною 540 точок.

Попередній перегляд і тестування перед друком

У Вас є два простих способи перевірити дизайн перед використанням справжніх етикеток:

  • У Gem Logic: щоразу під час збереження під полем дизайну з’являється зображення попереднього перегляду етикетки. Використовуйте його як основний цикл зворотного зв’язку.

  • Онлайн: вставте Ваш ZPL у безкоштовний переглядач Labelary, щоб побачити миттєву візуалізацію для різних розмірів етикеток. (Спочатку замініть {variables} на зразок тексту, оскільки Labelary не знає Ваших даних про продукт.)

Якщо справжня етикетка виглядає неправильно — обрізаний текст, QR-код, який не сканується, неправильний розмір — зверніться до розділу етикеток у Усунення несправностей.

Короткий довідник команд

Команда

Що вона робить

^XA / ^XZ

Початок / кінець етикетки. Усе розташовується між ними.

^PW

Ширина друку в точках.

^LL

Довжина етикетки (висота) в точках.

^LH

Початок етикетки — точка відліку (зазвичай 0,0).

^FO x,y

Початок поля — розташувати наступний елемент у позиції x,y.

^CF0,h

Встановити стандартну висоту шрифту (h точок) для наступного тексту.

^FD ... ^FS

Дані поля — вміст для друку — завершується роздільником поля.

^FX ... ^FS

Коментар — ігнорується принтером. Не може містити ^ або ~.

^MD

Щільність друку (темнота друку). Вище значення — темніше.

^BQN,m,m

QR-код; останнє число — це розмір. Дані починаються з QA,.

^BCN,h,...

Штрихкод Code 128; h — висота в точках.

^GB w,h,t

Намалювати рамку чи лінію (ширина, висота, товщина в точках).

^CI28

Кодування символів, щоб символи на кшталт друкувалися коректно.

Для повного опису мови Zebra публікує детальний посібник із команд ZPL, але команди вище охоплюють майже кожну етикетку товару.