Union Label journal

Что такое ZPL, EPL, TSPL и ESC/POS: в чем разница языков печати

Если вместо штрихкода на этикетке вылезает строка из букв и цифр — почти всегда дело не в поломке: принтеру отправили команду на языке, который он не понимает.

Автор Даяна Хархенова Маркетолог Union Label 6 мин 107 просмотров
Что такое ZPL, EPL, TSPL и ESC/POS: в чем разница языков печати
Что такое ZPL, EPL, TSPL и ESC/POS: в чем разница языков печати
Автор Даяна Хархенова
Маркетолог Union Label
20.07.2026 кол-во просмотров 107 6 мин

Если вместо штрихкода на этикетке появляется строка из букв и цифр, почти всегда дело не в поломке: принтеру отправили команду на языке, который он не понимает.

У термопринтеров нет единого стандарта разметки. Каждый производитель разработал собственный набор команд, и сегодня одновременно используются четыре основных языка печати: ZPL, EPL, TSPL и ESC/POS.

Позже часть производителей добавила поддержку нескольких языков и режимы эмуляции, чтобы упростить замену оборудования без полной переработки шаблонов печати.

Зачем принтеру вообще нужен язык печати


Обычный офисный принтер получает от компьютера готовое изображение страницы и переносит его на бумагу. Термопринтер этикеток может работать иначе: он получает текстовую команду, которая сообщает, где нужно напечатать штрихкод, какой текст разместить рядом и сколько экземпляров этикетки необходимо изготовить.

Эту команду формирует драйвер или программа печати, после чего данные напрямую отправляются на порт устройства. Набор таких команд и называется языком принтера. У каждого производителя может быть собственный синтаксис и набор поддерживаемых функций.

Основные языки печати

Язык Разработчик Особенности Где применяется
ZPL Zebra Блочный язык с широкими возможностями работы с графикой, шрифтами и шаблонами Принтеры Zebra и совместимые модели
EPL Eltron, позднее Zebra Относительно простой язык, который по-прежнему используется в старом оборудовании Старые принтеры Zebra, Eltron и некоторые мобильные модели
TSPL TSC Размер этикетки задается в миллиметрах, а координаты рассчитываются с учетом разрешения печати Принтеры TSC и многие совместимые бюджетные модели
ESC/POS Epson Потоковый язык команд для чековой печати с ограниченными возможностями позиционирования POS-принтеры, чековые и некоторые мобильные принтеры


Сегодня границы между языками стали менее жесткими. Многие принтеры других производителей поддерживают эмуляцию ZPL, а часть моделей TSC умеет автоматически определять входящий поток или переключаться между TSPL, ZPL и EPL через настройки устройства.

Однако поддержку определенного языка не стоит воспринимать как гарантию полной совместимости. Даже при работе с одним и тем же ZPL или EPL разные модели могут реализовывать только часть команд.

Из-за этого сложные шаблоны с графикой, нестандартными шрифтами, встроенными объектами и специальными настройками печати иногда требуют доработки после замены оборудования.

Перенос шаблона, написанного на EPL, на устройство с поддержкой только ZPL не работает автоматически. Синтаксис языков различается настолько, что принтер может напечатать пустую этикетку, вывести набор служебных символов или проигнорировать часть команд.

Один и тот же штрихкод на разных языках

Основные различия между языками хорошо видны на примере печати одного и того же штрихкода Code 128.

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

^XA
^FO50,50
^BY3
^BCN,100,Y,N,N
^FD123456789012
^FS
^XZ

В этом примере:

  • ^XA открывает формат этикетки;
  • ^XZ завершает этикетку;
  • ^FO задает координаты объекта;
  • ^BY устанавливает параметры штрихкода;
  • ^BC определяет тип и параметры Code 128;
  • ^FD передает данные для печати;
  • ^FS завершает описание поля.

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

SIZE 50 mm,30 mm
BARCODE 50,50,"128",100,1,0,3,3,"123456789012"

Команда SIZE 50 mm,30 mm задает физический размер этикетки. Команда BARCODE объединяет в одной строке координаты, тип штрихкода, высоту, поворот, ширину модулей и данные.

Таким образом, внешне одинаковый результат в ZPL и TSPL достигается разными способами описания.

Графика и передача данных


Логотипы и другие изображения передаются в термопринтер не как обычные графические файлы, а как побитовая карта. Перед печатью изображение преобразуется в монохромный битмап, поскольку термоголовка может только нагревать или не нагревать каждую отдельную точку.

В ZPL для загрузки графики используется команда ~DG с шестнадцатеричным потоком данных. В TSPL для аналогичной задачи применяется команда BITMAP.

В большинстве сетевых термопринтеров команды передаются через TCP-порт 9100 с использованием режима Raw TCP, исторически связанного с технологией HP JetDirect.

Если принтер получает поток команд на неподдерживаемом языке, он обычно не сообщает об ошибке. Вместо этого устройство может:

  • напечатать служебные символы;
  • вывести пустую этикетку;
  • проигнорировать часть команд;
  • остаться в ожидании корректной последовательности;
  • перенести текст команд непосредственно на этикетку.

Несоответствие драйвера и языка печати

Еще одна частая причина ошибок — несоответствие драйвера и выбранного языка печати. Даже если принтер поддерживает нужный язык команд, драйвер может формировать задания в другом формате.

Поэтому после замены оборудования иногда достаточно изменить язык печати в настройках или установить подходящий драйвер. Полная переработка шаблонов этикеток требуется не всегда.

Два типичных сценария

Одинаковые принтеры печатают по-разному

Принтеры одной модели из разных партий могут вести себя по-разному: часть устройств печатает этикетки нормально, а часть выводит бессмысленный набор символов.

Причина обычно не в производственном браке. В разных партиях может быть установлен разный язык печати по умолчанию. Например, одна партия работает в режиме ZPL, а другая — в режиме TSPL, хотя внешне и по документации устройства выглядят одинаково.

Проблема диагностируется явным переключением языка при инициализации устройства или проверкой его текущих настроек.

Штрихкод печатается, но плохо сканируется

Другой распространенный сценарий: этикетка визуально выглядит нормально, но штрихкод в некоторых случаях не считывается сканером.

Причина может быть не в языке печати, а в том, что координаты и размеры элементов рассчитаны под одно разрешение печатающей головки, например 203 dpi, а задание отправляется на принтер с разрешением 300 dpi.

При неправильном пересчете штрихкод смещается, становится слишком узким, меняет пропорции или выходит за пределы этикетки. Такая проблема часто возникает при переносе шаблонов между принтерами с разным разрешением.

Что стоит за разницей в коде


ZPL и TSPL можно отнести к декларативным языкам. Приложение описывает состав и расположение элементов этикетки, а принтер самостоятельно преобразует команды в растровое изображение и передает результат на термоголовку.

ESC/POS ближе к потоковой печати. Устройство выполняет команды последовательно, строка за строкой. Поэтому точное совмещение нескольких элементов часто требует ручного расчета отступов и ограничено возможностями конкретной модели.

Кодировки и кириллица

Отдельная группа проблем связана с кодировками. Кириллица в разных языках и прошивках обрабатывается по-разному.

В одних случаях таблицу символов необходимо задавать специальной командой в начале файла. В других кодовая страница определяется прошивкой и меняется через настройки или сервисное меню.

Если кодировка программы, команды и принтера не совпадает, русский текст может превратиться в вопросительные знаки, квадраты или нечитаемые символы.

Единицы измерения и разрешение

Разные языки используют разные подходы к единицам измерения. ZPL обычно оперирует точками, а в TSPL физические размеры этикетки могут задаваться в миллиметрах.

При этом координаты объектов все равно зависят от разрешения печатающей головки. Поэтому корректный перевод миллиметров в точки необходимо выполнять с учетом конкретного значения dpi.

Для расчета можно использовать формулу:

Количество точек = размер в миллиметрах × dpi / 25,4

Например, 10 мм при разрешении 203 dpi составляют приблизительно 80 точек, а при разрешении 300 dpi — около 118 точек.

Ограничения универсального подхода

Автоматическое распознавание языка команд снижает количество ошибок, при которых принтер не отвечает или печатает текст команд. Однако оно не устраняет различия в разрешении, кодировках, физических размерах этикетки и наборе доступных шрифтов.

Даже если устройство правильно определило, что полученный поток относится к ZPL, а не к TSPL, макет все равно должен учитывать характеристики конкретной модели:

  • разрешение печатающей головки;
  • максимальную ширину печати;
  • фактический размер этикетки;
  • тип датчика материала;
  • поддерживаемые шрифты;
  • кодовые страницы;
  • доступный объем памяти;
  • реализованный набор команд.

На практике большую часть этих различий берет на себя программа печати этикеток. Пользователь создает макет один раз, а программное обеспечение автоматически формирует команды для выбранной модели принтера с учетом разрешения, кодировки, размера материала и типа штрихкода.

Поэтому пользователю чаще всего достаточно выбрать нужное устройство в настройках, не разбираясь в особенностях ZPL, TSPL, EPL или ESC/POS.

Частые вопросы о языках печати

Правда ли, что принтеры Zebra понимают только ZPL, а TSC — только TSPL?

Нет. Жесткой привязки давно нет. Многие современные модели поддерживают несколько языков одновременно и позволяют переключаться между ними с помощью команды, настроек драйвера или сервисного меню.

Как узнать, какой язык использует старый принтер?

Стоит распечатать служебную этикетку самодиагностики. На многих моделях для этого необходимо выключить устройство, зажать кнопку подачи этикетки и включить питание.

На служебной этикетке обычно указываются версия прошивки, разрешение печатающей головки, сетевые параметры, активный режим и поддерживаемые языки команд. Точная последовательность запуска самодиагностики зависит от модели принтера.

Что делать, если один макет нужно печатать на принтерах разных производителей?

Можно подготовить отдельный шаблон для каждого языка печати или использовать программу, которая хранит макет в универсальном формате и автоматически формирует команды для выбранной модели принтера.

Почему вместо этикетки принтер печатает команды ZPL или TSPL?

Скорее всего, устройство работает в другом режиме и воспринимает поступившие команды как обычный текст. Необходимо проверить выбранный язык печати, режим эмуляции, драйвер и способ передачи задания.

Можно ли отправлять ZPL напрямую на сетевой принтер?

Да, если принтер поддерживает ZPL и принимает задания через Raw TCP. В большинстве случаев поток команд отправляется на IP-адрес принтера через TCP-порт 9100.

Нужно ли переписывать шаблоны при замене принтера 203 dpi на модель 300 dpi?

Не всегда. Если программа печати автоматически пересчитывает координаты и размеры, шаблон может продолжить работать. При прямой отправке команд ZPL, EPL или TSPL обычно требуется проверить размеры, координаты, штрихкоды и графические элементы.

Вывод

ZPL, EPL, TSPL и ESC/POS решают похожую задачу — управляют печатью, — но используют разный синтаксис и рассчитаны на разные типы оборудования.

ZPL широко применяется в промышленных и настольных принтерах этикеток, EPL остается актуальным для части старого оборудования, TSPL распространен среди принтеров TSC и совместимых моделей, а ESC/POS чаще используется в чековой и POS-печати.

Современные принтеры могут поддерживать несколько языков и режимы эмуляции, однако полная совместимость шаблонов не гарантируется. При переносе печати необходимо учитывать не только язык команд, но и разрешение устройства, размеры этикетки, кодировку, шрифты и особенности конкретной прошивки.


Продолжить чтение

Похожие статьи

20.07.2026

Маркировка

Программное обеспечение

Принтеры этикеток

Шаблоны этикеток