zpl и epl чем отличается
Небольшой путеводитель по ZPL
Добрый день, Хабрахабр.
Благодаря тепло принятой прошлой публикации, я могу опубликовать здесь эту статью. Спасибо всем, кто ставил плюсы.
По долгу службы мне частенько приходится формировать отчеты для этикеточных принтеров семейства Zebra.
Зебры они такие
Механизм формирования этикеток выглядит следующим образом: сначала с машины пользователя (компьютер, терминал сбора данных) на принтер отправляется специальным образом оформленная строка, затем внутренний процессор принтера обрабатывает эту строку, и выводит ее на печать.Но язык, на котором формируется строка для принтера (называется ZPL) на первый взгляд вызывает у непосвящённых нервную икоту и мандраж.
Прошу под кат, всех кто хочет разобраться в данном вопросе.
Пример:
А на печать выводится такой аккуратный бейджик:
Давайте разберемся, что же написано в этом коде, и рассмотрим основные элементы.
Первую часть своего выступления я посвящу разбору синтаксиса этого языка, в объеме достаточном для создания этикеток удовлетворительного качества. Во-второй части, приведу примеры кода на Java и VisualBasic, для того, чтобы отправить этикетку на печать самостоятельно. На основе этих примеров, вы сможете самостоятельно построить свою програму, для печати.
Часть 1. Синтаксис ZPL
Во первых, все измерения в ZPL указываются в точках (points). Поэтому, для более ясного представления вы должны посмотреть в документации на принтер, какая у вас плотность точек на единицу измерения длины.
Сначала кратко пробежимся по основным командам, затем рассмотрим их более подробно в связке.
1. Начало и конец ZPL-кода:
^XA – начало кода, ^XZ – конец кода;
2.Отступы для последующего содержимого:
^FO x,y где: x – отступ от левого края, y – отступ сверху;
3.Разделитель полей:
^FS — обозначает конец определения поля. Буквально можно считать его сигналом конца строки;
4.2. Вывод текста с параметрами указанными в предыдущем пункте:
^FD
Повернем, и изменим шрифт:
Изменим шрифт на S:
Обязательно запомните, что разные шрифты могут выглядеть по разному, в отношении размеров, как можно видеть выше. Я чаще всего использую шрифт S.
5.Блок текста:
Изменим код, чтобы было две строки, и расстояние между строчками сделаем в 10 точек:
А теперь сделаем отступ для второй строки в 30 точек влево:
6. Рисование прямоугольников:
Если хотим нарисовать просто линию, то рисуем прямоугольник с высотой равной 0:
7.Штрихкод состоит из трех команд – первая задает его размеры, вторая настройки и третья — содержание:
^BC – штрихкод в стандарте 128 (подробнее Code_128); Есть также еще несколько форматов, но ввиду того, что мне не приходилось ими пользоваться, в данной статье они рассматриваться не будут, и рекомендую посмотреть информацию по ним в официальной документации поставляемой к принтерам Zebra;
7.3. Вывод штрихкода на печать:
^FD
К сожалению, штрихкод нельзя поместить в «коробку», как текст, чтобы отцентрировать по ширине этикетки, и поэтому приходится шаманить с полями и отступами.
Перевернем, и укажем печатать расшифровку сверху (сейчас получилось снизу):
На этом остановимся на рассмотрении основных элементов ZPL, и перейдем к части второй, в которой вкратце рассмотрим механизм отправки информации на принтер.
Часть 2. Печать
Механизм передачи проще некуда. Для этого, мы должны знать IP, где находится принтер, и порт. Далее, формируем поток, который отправляем по указанному адресу, и получаем на выходе этикетку.
Пример на Visual Basic:
Как видите, ничего сложного. Надеюсь, что моя статья, облегчит путь отважным укротителям Зебр.
Засим позвольте откланяться. Жду советов, критики и поддержки.
Принтеры штрих кодов в автоматизации торговли
Принтеры штрих кодов и этикеток занимают важное место в процессе автоматизации торгово-складской деятельности. С помощью таких устройств можно организовать процесс этикетирования на малом, крупном или среднем предприятии.
Принтеры различаются по скорости, длине, ширине, разрешению и типу печати, а также поддержке различных интерфейсов, опций и аксессуаров. В этой статье мы расскажем начинающим автоматизаторам о том, какие бывают принтеры этикеток и как эффективнее их использовать, а также, почему стоит выбрать то или иное устройство.
По способу печати различают 2 основных типа принтеров: термо- и термотрансферные. Каждый из этих типов имеет свои особенности. Выбирать то или иное устройство необходимо исходя из конкретных условий.
• Настольные Принтеры данного класса занимают немного места в оснащении рабочих мест и имеют оптимальную производительность.
Как правило, они широко используются в офисах, на небольших предприятиях, где потребность в печати не превышает 5000 этикеток в сутки.
К настольным термопринтерам следует отнести Godex DT2/DT4, Zebra GK420D. Среди наиболее популярных компактных устройств термотрансферной печати выделяют Godex G300/G330, G500/G530.
• Промышленные Для оснащения крупных предприятий существуют целые линейки промышленных принтеров штрихкода.
Такие устройства имеют высокую производительность и возможность для установки специальных аксессуаров: намотчиков и держателей этикеток, роторного резака и т.д. Особый интерес на рынке вызвали такие модели как Godex EZ6200 plus, EZ6300 plus, EZ2200.за счет оптимального соотношения цены и качества.
• Мобильные Мобильные принтеры имеют немаловажное преимущество – компактный размер. Устройства могут работать автономно или от сети.
Они могут оснащаться как поддержкой беспроводных интерфейсов Wi-Fi (Sewoo LK-P11SW), так и Bluetooth (Sewoo LK-P11SB).
Термопечать
Термопринтеры имеют привлекательную стоимость и невысокую стоимость обслуживания. В качестве расходных материалов нужна только термобумага. Срок службы таких этикеток до момента выцветания составляет несколько месяцев, в зависимости от температурных условий. Однако стоимость печати и расходных материалов очень доступная. Оптимальным выбором термопринтер станет для оснащения кассы быстрого обслуживания или изготовления билетов, где этикетка изготавливается на несколько часов или дней, а впоследствии утилизируется. Термоэтикетку можно определить, проведя ногтем по ее поверхности, в результате чего должен остаться черный след.
Термотрансферная печать
Технологии термотрансферной печати применяются в промышленных условиях. Высокое качество, долговечность и устойчивость к истираниям объясняется технологиями термопереноса. То есть, в отличие от термопечати здесь идет использование красящего слоя (риббона). Срок службы термотрансферных этикеток может составлять несколько лет. Еще один плюс – разнообразие материалов, включая печать на синтетических, нейлоновых лентах, глянце и т.д. Как правило еще их называют полуглянцевыми. Бумажные этикетки для термотрансферной печати используются чаще за счет доступной стоимости и применяются для локальных инвентаризаций и маркировки. Однако синтетические имеют более высокую устойчивость к влаге и истираниям.
Термотрансферные принтеры могут выпускаться как в компактном настольном корпусе, так и в промышленных сериях для большого объема печати.
Сравнительная характеристика термо- и термотранферной печати.
термопечать | термотрансферная печать | |
носители | термобумага | нейлоновые, синтетические, полимерные этикетки, |
расходные материалы | только термоэтикетки | термотрансферные этикетки, риббоны |
риббоны | не используются | воск (WAX), смола (RESIN), воск+смола (WAX+RESIN) |
разрешение печати | 203/300 dpi (от модели) | 203/300 dpi (от модели) |
срок службы этикетки | несколько месяцев | несколько лет |
стойкость краски к истираниям, механическим воздействиям, критическим условиям | низкая | высокая |
средний ресурс печатной головки | около 50 км | около 50 км. |
наиболее популярные принтеры | Godex DT2, Godex DT4, ZEBRA GK420d (USB+RS232+LPT) | Godex G300/330, Godex G500/G530, Godex RT700/730. |
Программирование принтеров
Современные принтеры этикеток поддерживают работу с программными продуктами 1С различных версий. Для того чтобы распечатывать этикетки из программы достаточно установить Windows драйвер. Также для тех, кто привык работать с Linux, существуют драйверы для этой ОС.
У каждого производителя принтеров этикеток есть специальное ПО.
Если сравнивать программное обеспечение этих 2 марок, то у Godex преимуществ больше.
Принтеры Zebra оснащены тестовым ПО ZebraDezigner. Полные версии в комплект не входят, и их необходимо приобретать за дополнительную плату. У принтеров Zebra управление устройствами выполняется с помощью языков программирования ZPL и EPL.
Принтеры Godex оснащаются бесплатной программой GoLabel, а набор команд задается на специальном языке программирования Godex EZPL, при этом устройства способны распознавать и языки ZPL и EPL. При этом принтеры поддерживают режим автопереключения.
Программа GoLabel позволяет создавать и редактировать макеты этикеток, синхронизироваться с базой 1С. Программа оснащена широким набором базовых шрифтов и поддерживает загрузку дополнительных, что позволяет полностью обслуживать принтер и делать даже сложные макеты этикеток. В отличие от профессиональной программы Bartender, она полностью бесплатна и имеет достаточно широкий функционал, включая работу с SQL. GoLabel — комплексное ПО для подключения принтера, осуществления настроек, работы с макетами, загрузке шрифтов и т.д.
В чем отличие epl от zpl
Добрый день, Хабрахабр.
Благодаря тепло принятой прошлой публикации, я могу опубликовать здесь эту статью. Спасибо всем, кто ставил плюсы.
По долгу службы мне частенько приходится формировать отчеты для этикеточных принтеров семейства Zebra.
Механизм формирования этикеток выглядит следующим образом: сначала с машины пользователя (компьютер, терминал сбора данных) на принтер отправляется специальным образом оформленная строка, затем внутренний процессор принтера обрабатывает эту строку, и выводит ее на печать.Но язык, на котором формируется строка для принтера (называется ZPL) на первый взгляд вызывает у непосвящённых нервную икоту и мандраж.
Прошу под кат, всех кто хочет разобраться в данном вопросе.
^XA ^FO 0,10 ^GB632,0,2^FS ^FO0,25 ^FB632,1,0,C,0 ^ASN,70,70 ^FDWAR INC.^FS ^FO0,100 ^GB632,0,2^FS ^FO0,120 ^FB632,1,0,C,0 ^ASN,60,60 ^FDGoose^FS ^FO0,180 ^FB632,1,0,C,0 ^ASN,60,60 ^FDWild^FS ^FO0,240 ^GB632,0,2^FS ^FO120,260 ^BY2 ^BCN,70,N,N,N ^FDSECRECTCODE^FS — ^XZ
А на печать выводится такой аккуратный бейджик:
Давайте разберемся, что же написано в этом коде, и рассмотрим основные элементы.
Первую часть своего выступления я посвящу разбору синтаксиса этого языка, в объеме достаточном для создания этикеток удовлетворительного качества. Во-второй части, приведу примеры кода на Java и VisualBasic, для того, чтобы отправить этикетку на печать самостоятельно. На основе этих примеров, вы сможете самостоятельно построить свою програму, для печати.
Часть 1. Синтаксис ZPL
Во первых, все измерения в ZPL указываются в точках (points). Поэтому, для более ясного представления вы должны посмотреть в документации на принтер, какая у вас плотность точек на единицу измерения длины.
Сначала кратко пробежимся по основным командам, затем рассмотрим их более подробно в связке.
1. Начало и конец ZPL-кода:
^XA — начало кода, ^XZ — конец кода;
2.Отступы для последующего содержимого:
^FO x,y где: x — отступ от левого края, y — отступ сверху;
^FS — обозначает конец определения поля. Буквально можно считать его сигналом конца строки;
4.Масштабируемый текст. Состоит из двух частей, выбор шрифта и ввод текста:
— по-умолчанию стоит A. Точнее ее даже не надо вводить, другие шрифты можно взять из официальной документации:
N — нормальная ориентация; R — повернуто на 90 градусов по часовой стрелке;
I — перевернуто на 180 градусов; B — повернуто на 270 градусов;
4.2. Вывод текста с параметрами указанными в предыдущем пункте:
^XA ^FO20,20 — отступ по 20 точек от верхнего и левого края этикетки ^ASN,70,70 — нормальная ориентация, шрифт S, высота и ширина 70 точек ^FDWAR INC.^FS — содержание текста WAR INC. ^XZ
Повернем, и изменим шрифт:
^XA ^FO20,20 — отступ по 20 точек от верхнего и левого края этикетки ^ABB,30,30 — повернуто на 270 градусов, шрифт B, высота и ширина 30 точек ^FDWAR INC.^FS — содержание текста WAR INC. ^XZ
Изменим шрифт на S:
^XA ^FO20,20 — отступ по 20 точек от верхнего и левого края этикетки ^ASB,30,30 — повернуто на 270 градусов, шрифт S, высота и ширина 30 точек ^FDWAR INC.^FS — содержание текста WAR INC. ^XZ
Обязательно запомните, что разные шрифты могут выглядеть по разному, в отношении размеров, как можно видеть выше. Я чаще всего использую шрифт S.
5.Блок текста:
— может принимать значения: L(по левому краю), R (по правому краю), C (по центру), J (растянуть текст по ширине поля);
Обычно я использовал данную команду для центрирования текста, или если необходимо разместить текст в несколько строчек. Если текст не умещается в строку, он начинает накладываться сам на себя. И получается так:
^XA ^FO 20,20 ^FB400,1,0,C,0 ^AVN,70,70 ^FDWAR INC WILD GOOSE^FS ^XZ
Изменим код, чтобы было две строки, и расстояние между строчками сделаем в 10 точек:
^XA ^FO 20,20 ^FB400,2,10,C,0 ^AVN,70,70 ^FDWAR INC WILD GOOSE^FS ^XZ
А теперь сделаем отступ для второй строки в 30 точек влево:
^XA ^FO 20,20 ^FB400,2,10,L,30 ^AVN,70,70 ^FDWAR INC WILD GOOSE^FS ^XZ
6. Рисование прямоугольников:
В скобках указаны не обязательные параметры.
Цвет линии: B (черный) или W (белый)
Скругление углов указывается цифрой от 0, до 8 (сильное скругление)
С сильным скруглением:
^XA ^FO20,20 ^GB300,100,2,B,8^FS ^XZ
^XA ^FO20,20 ^GB300,100,2^FS ^XZ
Если хотим нарисовать просто линию, то рисуем прямоугольник с высотой равной 0:
^XA ^FO20,20 ^GB300,0,2^FS ^XZ
7.Штрихкод состоит из трех команд — первая задает его размеры, вторая настройки и третья — содержание:
7.2. Настройки штрихкода:
— N — нормальная ориентация; R — повернуто на 90 градусов по часовой стрелке; I — перевернуто на 180 градусов; B — повернуто на 270 градусов;
, — принимают значения Y (да) или N (нет);
— с этим полем я не разобрался, по умолчанию N;
^BC — штрихкод в стандарте 128 (подробнее Code_128); Есть также еще несколько форматов, но ввиду того, что мне не приходилось ими пользоваться, в данной статье они рассматриваться не будут, и рекомендую посмотреть информацию по ним в официальной документации поставляемой к принтерам Zebra;
7.3. Вывод штрихкода на печать:
К сожалению, штрихкод нельзя поместить в «коробку», как текст, чтобы отцентрировать по ширине этикетки, и поэтому приходится шаманить с полями и отступами.
^XA ^FO 20,20 ^BY3 ^BCN,100,Y,N,N ^FD123456789^FS ^XZ
Перевернем, и укажем печатать расшифровку сверху (сейчас получилось снизу):
^XA ^FO 20,20 ^BY3 ^BCI,100,Y,Y,N ^FD123456789^FS ^XZ
На этом остановимся на рассмотрении основных элементов ZPL, и перейдем к части второй, в которой вкратце рассмотрим механизм отправки информации на принтер.
Часть 2. Печать
Механизм передачи проще некуда. Для этого, мы должны знать IP, где находится принтер, и порт. Далее, формируем поток, который отправляем по указанному адресу, и получаем на выходе этикетку.
Пример на Visual Basic:
Dim i As Double Dim SSCC As String Dim ipAddress As String = «127.0.0.1» Dim port As Integer = 1234 Dim ZPLString As String Try ‘Открываем соединение Dim client As New System.Net.Sockets.TcpClient client.Connect(ipAddress, port) Dim writer As New System.IO.StreamWriter(client.GetStream()) ‘Формируем ZPL-строку ZPLString= «^XA» & «^BY2» & «^FO0,200» & «^FB632,2,0,C,0» & «^ASN,60,60» & «^FDHELLO HABRAHABR. ^FS» & «^XZ» writer.Write(ZPLString) writer.Flush() ‘закрываем соединение writer.Close() client.Close() Catch ex As Exception End Try
Как видите, ничего сложного. Надеюсь, что моя статья, облегчит путь отважным укротителям Зебр.
Засим позвольте откланяться. Жду советов, критики и поддержки.
Быстрая печать этикеток (ZPL, EPL, TSPL, EZPL, GEPL, TSPL-EZ)
С вводом маркировки товаров для многих стал актуальным вопрос печати на принтерах этикеток. К сожалению, стандартная печать этикеток через формируемый табличный документ оставляет желать лучшего как по скорости работы, так и по качеству печати. И здесь приходит на помощь печать этикеток с помощью внутренних команд принтера. Различные производители торгового оборудования включают поддержку разных языков для своих устройств, но принцип печати везде один: формируем код на встроенном языке и отправляем его на принтер.
В параметре «СистемноеИмяПринтера» передаем имя принтера как он называется в системе. Общий доступ к принтеру открывать не требуется. Если используется сетевой принтер, то указываем полный путь к принтеру.
Пример использования
Для использования загружаем компоненту в общий макет вашей конфигурации. В моем примере он называется ме_LabelPrinterComponent. Формируем необходимый код этикетки и отправляем на печать через соответствующий метод компоненты.
Универсальное расширение конфигурации
Для компоненты сделано расширение, которое можно загрузить в любую конфигурацию. Компонента загружена в общий макет «ме_LabelPrinterComponent». При первом вызове функции 1С сама установит компоненту на компьютере пользователя. Работа поддерживается как на толстом, так и на тонком клиенте.
В модуле «ме_ПечатьЭтикеток» добавлены две функции, одна используется для отправки на печать этикетки. Вторая позволяет получить список установленных в системе принтеров. Для получения списка принтеров используется COM-объект WScript.Network. При первом вызове этого метода потребуется разрешить подключение этой библиотеки. Чтобы скрыть это уведомление отключите безопасный режим для этого расширения.
Для тестирования печати добавлена обработка. Она позволяет отправить на принтер любой текст, в том числе этикетку на внутреннем языке принтера.
Расширение можно подключить к любой конфигурации на управляемых формах. Для обычных форм компонента также будет работать, только потребуется перенести общий модуль, макет и обработку в Вашу конфигурацию.
Работа компоненты была протестирована на следующих платформах:
Протестировано на следующих конфигурациях:
Планы на развитие функционала:
1. Добавить функцию получения списка принтеров
2. Добавить отправку на печать с получением ответа от принтера (Нужно для получения данных RFID. При наличии подходящего принтера)
Внимание: В текущей версии компоненты есть проблема при печати на сетевой принтер. Пока не исправил.
Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download
С вводом маркировки товаров для многих стал актуальным вопрос печати на принтерах этикеток. К сожалению, стандартная печать этикеток через формируемый табличный документ оставляет желать лучшего как по скорости работы, так и по качеству печати. И здесь приходит на помощь печать этикеток с помощью внутренних команд принтера. Различные производители торгового оборудования включают поддержку разных языков для своих устройств, но принцип печати везде один: формируем код на встроенном языке и отправляем его на принтер.
В параметре «СистемноеИмяПринтера» передаем имя принтера как он называется в системе. Общий доступ к принтеру открывать не требуется. Если используется сетевой принтер, то указываем полный путь к принтеру.
Пример использования
Для использования загружаем компоненту в общий макет вашей конфигурации. В моем примере он называется ме_LabelPrinterComponent. Формируем необходимый код этикетки и отправляем на печать через соответствующий метод компоненты.
Универсальное расширение конфигурации
Для компоненты сделано расширение, которое можно загрузить в любую конфигурацию. Компонента загружена в общий макет «ме_LabelPrinterComponent». При первом вызове функции 1С сама установит компоненту на компьютере пользователя. Работа поддерживается как на толстом, так и на тонком клиенте.
В модуле «ме_ПечатьЭтикеток» добавлены две функции, одна используется для отправки на печать этикетки. Вторая позволяет получить список установленных в системе принтеров. Для получения списка принтеров используется COM-объект WScript.Network. При первом вызове этого метода потребуется разрешить подключение этой библиотеки. Чтобы скрыть это уведомление отключите безопасный режим для этого расширения.
Для тестирования печати добавлена обработка. Она позволяет отправить на принтер любой текст, в том числе этикетку на внутреннем языке принтера.
Расширение можно подключить к любой конфигурации на управляемых формах. Для обычных форм компонента также будет работать, только потребуется перенести общий модуль, макет и обработку в Вашу конфигурацию.
Работа компоненты была протестирована на следующих платформах:
Протестировано на следующих конфигурациях:
Планы на развитие функционала:
1. Добавить функцию получения списка принтеров
2. Добавить отправку на печать с получением ответа от принтера (Нужно для получения данных RFID. При наличии подходящего принтера)
Внимание: В текущей версии компоненты есть проблема при печати на сетевой принтер. Пока не исправил.