Как сделать этикетку в зебре

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

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

Зебры они такие
Механизм формирования этикеток выглядит следующим образом: сначала с машины пользователя (компьютер, терминал сбора данных) на принтер отправляется специальным образом оформленная строка, затем внутренний процессор принтера обрабатывает эту строку, и выводит ее на печать.Но язык, на котором формируется строка для принтера (называется ZPL) на первый взгляд вызывает у непосвящённых нервную икоту и мандраж.
Прошу под кат, всех кто хочет разобраться в данном вопросе.

Пример:

Часть 1. Синтаксис ZPL

Во первых, все измерения в ZPL указываются в точках (points). Поэтому, для более ясного представления вы должны посмотреть в документации на принтер, какая у вас плотность точек на единицу измерения длины.
Сначала кратко пробежимся по основным командам, затем рассмотрим их более подробно в связке.
1. Начало и конец ZPL-кода:
^XA – начало кода, ^XZ – конец кода;

2.Отступы для последующего содержимого:
^FO x,y где: x – отступ от левого края, y – отступ сверху;

3.Разделитель полей:
^FS — обозначает конец определения поля. Буквально можно считать его сигналом конца строки;


4.Масштабируемый текст. Состоит из двух частей, выбор шрифта и ввод текста:
4.1. Выбор шрифта:
^A , , :
– по-умолчанию стоит A. Точнее ее даже не надо вводить, другие шрифты можно взять из официальной документации:

:
N – нормальная ориентация; R – повернуто на 90 градусов по часовой стрелке;
I – перевернуто на 180 градусов; B – повернуто на 270 градусов;

4.2. Вывод текста с параметрами указанными в предыдущем пункте:
^FD


Повернем, и изменим шрифт:


Изменим шрифт на S:


Обязательно запомните, что разные шрифты могут выглядеть по разному, в отношении размеров, как можно видеть выше. Я чаще всего использую шрифт S.

5.Блок текста:

^FB , , , ,
— может принимать значения: L(по левому краю), R (по правому краю), C (по центру), J (растянуть текст по ширине поля);
Обычно я использовал данную команду для центрирования текста, или если необходимо разместить текст в несколько строчек. Если текст не умещается в строку, он начинает накладываться сам на себя. И получается так:


Изменим код, чтобы было две строки, и расстояние между строчками сделаем в 10 точек:


А теперь сделаем отступ для второй строки в 30 точек влево:


6. Рисование прямоугольников:

^GB , , , ( , )
В скобках указаны не обязательные параметры.
Цвет линии: B (черный) или W (белый)
Скругление углов указывается цифрой от 0, до 8 (сильное скругление)
Примеры:
С сильным скруглением:



Если хотим нарисовать просто линию, то рисуем прямоугольник с высотой равной 0:


7.Штрихкод состоит из трех команд – первая задает его размеры, вторая настройки и третья — содержание:

7.1.Размеры штрихкода:
^BY , ( , )

7.2. Настройки штрихкода:
^BC , , , ,
— N – нормальная ориентация; R – повернуто на 90 градусов по часовой стрелке; I – перевернуто на 180 градусов; B – повернуто на 270 градусов;
, — принимают значения Y (да) или N (нет);
— с этим полем я не разобрался, по умолчанию N;

^BC – штрихкод в стандарте 128 (подробнее Code_128); Есть также еще несколько форматов, но ввиду того, что мне не приходилось ими пользоваться, в данной статье они рассматриваться не будут, и рекомендую посмотреть информацию по ним в официальной документации поставляемой к принтерам Zebra;

7.3. Вывод штрихкода на печать:
^FD


Перевернем, и укажем печатать расшифровку сверху (сейчас получилось снизу):


На этом остановимся на рассмотрении основных элементов ZPL, и перейдем к части второй, в которой вкратце рассмотрим механизм отправки информации на принтер.

Часть 2. Печать

Механизм передачи проще некуда. Для этого, мы должны знать IP, где находится принтер, и порт. Далее, формируем поток, который отправляем по указанному адресу, и получаем на выходе этикетку.
Пример на Visual Basic:

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

Для качественной печати на специализированные этикеточные принтеры (такие как Zebra, Honeywell, Intermec, TSC и т.д.). У каждого производителя принтеров, а иногда у каждой модели, есть свой язык печати, в котором программируется этикетка.

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

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

Добавление RAW-этикетки

Рассмотрим создание RAW-этикетки на примере принтера Zebra RW420, для которого используется язык CPCL.

Для этого в панели управления Mobile SMARTS добавим папку для принтеров Zebra RW420 (если такой еще нет). Папки нужны для того, чтобы отправлять нужные RAW-этикетки на нужные модели принтеров (см. структуру папок для RAW печати).



Далее используя панель управления Mobile SMARTS можно добавить следующую этикетку:



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

Для указания на использования русского шрифта нужно указать что-то типа такого:


*DEJAVUSA.CPF — шрифт, загруженный на принтер. Загрузка шрифтов происходит при первом подключении принтера в мобильном приложении Mobile SMARTS при помощи так называемых настроечных этикеток (см. структуру папок для печати RAW-этикеток).

Вставка данных в RAW-этикетку

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

Дизайнер этикеток Zebra Designer

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

Здесь Вы сможете скачать бесплатно дизайнер этикеток новой версии v.2 ZebraDesigner2 и демоверсию платного редактора этикеток ZebraDesignerPro2.

Программное обеспечение Zebra Designer вышло на замену программного обеспечения Bar One v.6.0. Эта программа к сожалению не поддерживает работу с файлами этикеток прежнего ПО.

Спецпредложение: печать торговых ценников на чековом принтере

Главным достоинством является небывалое ранее функциональное наполнение в сочетании с беспрецедентным снижением цены.

Сравнить между собой версии Zebra Designer, а также оценить преимущества функционального наполнения новинки можно по нижеприведенной таблице:

Недавно была выпущена обновленная версия дизайнера - ZebraDesigner 2 с дополнениями и улучшениями.

ZebraDesigner XML

В дополнение к двум уже имеющимся версиям дизайнера этикеток, компания Зебра выпустила еще одну версию дизайнера ZebraDesigner XML. Она предназначена для разработки и печати этикеток на принтерах с поддержкой языка XML.

В нашем случае поддержка принтером языка XML обязательно предполагает одновременно поддержку им языка ZPL. Это необходимо потому, что формат этикетки создается именно на языке ZPL, загружается в память принтера, подключенного к Ethernet-сети, а XML-документ является средством доставки данных в поля этикетки и указания количества печатаемых этикеток. Таким образом, можно организовать печать этикеток (по заранее созданному и загруженному в принтер формату) на принтере без непосредственного подключения к компьютеру, имея лишь подключение через принтсервер к Ethernet-сети. XML-документ может быть направлен из какой-либо ERP-системы.

Дизайнер этикеток ZebraDesigner XML поддерживает одну из перечисленных операционных систем: Microsoft P ® P Windows P ® P 98 SE, ME, NT, 2000, XP или 2003.

Zebra Designer for mySAP™ Business Suite

Компании Zebra и SAP давно объявили о стратегическом партнерстве. В рамках этого партнерства была разработана специальная версия дизайнера этикеток Zebra Designer for mySAP™ Business Suite. В октябре 2007 г вышло обновление этой программы. Для получения возможности печати любых необходимых этикеток непосредственно из системы ERP SAP R/3 с помощью пакета программ Zebra Designer for mySAP™ Business Suite и документации к нему выполняется:

  • установка драйвера принтера Zebra в систему R/3;
  • создание макета(ов) этикетки(ок), которые необходимо использовать при работе с системой R/3 с указанием переменных полей, данные для которых будут передаваться из системы;
  • генерирование специального формата для mySAP™ Business Suite, именуемого SAP-скриптом, для всех созданных этикето;
  • запись созданных SAP-скриптов в необходимые папки и каталоги.

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

Дизайнер этикеток Zebra Designer for mySAP™ Business Suite поддерживает одну из перечисленных операционных систем: Microsoft P ® P Windows P ® P 95, 98, NT, 2000.

Zebra Designer –программное обеспечение для дизайна и печати этикеток . Программа поддерживает большинство операционных систем и принтеров практически всех классов (Начального, среднего и промышленного).

ZebraDesigner Pro , ZebraDesigner для XML и ZebraDesigner mySAP являются демонстрационными версиями. Чтобы обеспечить их полную функциональность, нужен ключ для активации программы.

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

  • ZebraDesigner Pro помогает создать сложные этикетки с фиксированными или переменными данными, подключение к базе данных, поддерживает возможности RFID. Программа обеспечивает моделирование этикеток любой сложности и возможность управления работой несколькими принтерами одновременно. Интеграция процесса печати этикеток со штрих-кодировкой в систему управления предприятием не требует дополнительных затрат на доработку базы данных, создание отчетов и подготовку исходной информации, повышается производительность и снижаются затраты на создание маркировочной продукции.
  • ZebraDesigner для XML с функциями программного обеспечения для разработки этикеток и инструментов настройки оборудования. Позволяет разработать и напечатать этикетки на принтерах с поддержкой языка XML. Обеспечивает возможность печати на XML-совместимых принтерах Zebra. Простой мастер подсказок по переменным обеспечивает связь переменной информации с текстовой информацией, штрих-кодом и RFID метками на этикетке. При необходимости возможна загрузка графических элементов и шрифтов. Поддерживает операционные системы: MicrosoftP®P Windows P®P 98 SE, ME, NT, 2000, XP или 2003 .
  • ZebraDesigner для mySAP Business Suite обеспечивает выполнение печати непосредственно из среды mySAP™ Business Suite без применения промежуточного программного обеспечения или дополнительного программирования.
  • Установка драйвера принтера Zebra в систему R/3
  • Создание макетов этикеток, используемых при работе с системой R/3 с указанием переменных полей, для которых передача данных осуществляется из системы генерирования специального формата для mySAP™ Business Suite , который называется SAP-скриптом
  • Созданные SAP-скрипты записываются в определенные папки и каталоги

Если Вам понравилась наша статья, подписывайтесь на наш канал и оставьте комментарий !

Соболезную
Я с ними намучился.
Ужасно капризная штука в плане настройки.
Сейчас у меня два работают, но я до сих пор не понимаю "Как?" :)

Мне пришлось столкнуться с моделью Zebra LP2824 - штука действительно капризная.

Про типоразмеры согласен, но вот про способ вывода - категорически нет. Действительно, печатать можно двумя способами: 1) подготовкой изображения этикетки и отправкой оного спулеру Windows 2) вызовом нативных команд принтера. В первом случае придётся или искать алгоритмы формирования штрих-кодов, или специальные шрифты, или компоненты, умеющие генерировать штрих-код.

Алгоритмы я отринул сразу.

Шрифты в принципе в интернете кое-где валяются, но как правило или платные, или демонстрационные, или корявые. К тому же контрольную сумму при использовании шрифтов все равно придётся рассчитывать самому.

Компоненты тоже имеются, и обычно тоже платные (не знаю, как для Delphi, но для дотнета обычно просят денежку).

В чем преимущество EPL:
1) этикетка всегда получается читаемая сканером
2) в вашем распоряжении практически все стандарты штрих-кодирования.

Любой драйвер любого дивайса как-раз и существует для сопряжения двух интерфейсов.
Конкретно в случае с Win-принтером (не важно, зебра там или еще какой-то зверь) его драйвер как раз и занимается сопряжением GDI и одним или более нативных языковых интерфейсов принтера.

Засада имеет место, когда от LP2824 (про другие ничего не могу сказать) требуют выполнить встроенный рендеринг текста, в то время как предыдущее аналогичное требование находится в этот момент в стадии выполнения.

А в батниках в демо-примерах к дивайсу на это, конечно же, заострено особое внимание)

Или как ?)
Или готов процитировать опровержение ?


> Gorlum © (28.08.06 15:30) [19]
>
> Хм, вообще этот процесс занимает не минуты.
> пара секунд - максимум.

Я попытался пока что хотя бы обратиться к принтеру вообще (у меня под рукой нет Зебры, только LaserJet 5L). Собрав что-то из обрывков текстов VCL, я соорудил вот это вот:

procedure TForm1.Button1Click(Sender: TObject);
var
hLPT1: THandle;
Buffer: array[0..1023] of Char;
IpNumberOfBytesWritten: DWORD;
begin
hLPT1 := CreateFile("LPT1", GENERIC_READ or GENERIC_WRITE, 0,
nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

if hLPT1 = INVALID_HANDLE_VALUE then
raise EAbort.CreateFmt("Ошибка открытия порта: %d",[GetLastError]);
try
FillChar(Buffer, StrLen(Buffer), "A");
if not WriteFile(hLPT1, Buffer, StrLen(Buffer), IpNumberOfBytesWritten, nil) then
raise EAbort.CreateFmt("Ошибка записи в порт: %d",[GetLastError]);
finally
CloseHandle(hLPT1);
end;
end;

Потрясающе, но это получилось!
Принтер напечатал строку из букв "AAAAAAAAA. "

----------
Теперь хочу понять следующее. Видимо я должен попытаться написать в буфер команду на языке EPL.
Может у кого-то есть пример самой простой команды (набора команд) для какой-нибудь этикетки?
Дальше я уже сам разберусь по мануалу ELP.

Даже 203 dpi может печатать очень мелкие коды. Просто они читаться будут сканером с более высоким размешением.

Читайте также: