Печать на специализированных принтерах этикеток, таких как Zebra, существенно отличается от работы с обычными офисными принтерами. Часто разработчики сталкиваются с тем, что этикетка «съезжает», штрихкод получается размытым и не читается сканером, а попытка вывести простую таблицу превращается в сложную задачу. В данной статье мы подробно разберем два основных метода работы с принтерами Zebra, выясним причины типичных ошибок и научимся формировать сложные макеты программно.
Это самый простой способ, при котором принтер Zebra воспринимается системой как обычный принтер. Мы создаем Табличный документ в 1С, размещаем там текст и штрихкоды, а затем отправляем на печать. Однако, чтобы этот метод работал корректно, необходимо выполнить ряд настроек.
Рассмотрим по шагам настройку параметров страницы. Одной из главных проблем является игнорирование принтером размеров этикетки. Для решения этой задачи в коде 1С необходимо жестко задать параметры страницы, используя свойство Custom.
Проанализируем пример кода для настройки макета перед печатью:
ТабличныйДок = Новый ТабличныйДокумент;
// Указываем, что размер страницы будет задан вручную
ТабличныйДок.РазмерСтраницы = "Custom";
// Высота и ширина указываются в миллиметрах
ТабличныйДок.ВысотаСтраницы = 70;
ТабличныйДок.ШиринаСтраницы = 100;
// Убираем поля, чтобы задействовать всю область печати
ТабличныйДок.ПолеСверху = 0;
ТабличныйДок.ПолеСнизу = 0;
ТабличныйДок.ПолеСлева = 0;
ТабличныйДок.ПолеСправа = 0;
// Устанавливаем масштаб 100%, чтобы избежать искажения штрихкода
ТабличныйДок.АвтоМасштаб = Ложь;
ТабличныйДок.МасштабПечати = 100;
Важно помнить, что даже при правильных настройках в 1С, драйвер принтера может иметь свои установки «по умолчанию». Разберем, на что обратить внимание в настройках драйвера (ZDesigner или Seagull):
Darkness (Плотность) в настройках драйвера до 15-20 единиц.Для высокоскоростной печати и получения идеально четких штрихкодов используется язык ZPL (Zebra Programming Language). В этом случае мы не рисуем макет в 1С, а отправляем принтеру текстовые команды. Принтер сам генерирует штрихкод из переданных цифр, используя свои внутренние алгоритмы.
Выясним преимущества этого метода: штрихкоды всегда имеют идеальную геометрию, печать происходит мгновенно, так как объем передаваемых данных в десятки раз меньше, чем при графической печати. Рассмотрим пример формирования простого ZPL-кода для печати текста и штрихкода:
// ^XA - начало формата
// ^FO - позиция (отступ слева, отступ сверху)
// ^A0N,30,30 - шрифт и его размер
// ^FD - данные поля
// ^BC - штрихкод Code 128
// ^XZ - конец формата
ТекстКоманды = "^XA
|^FO50,50^A0N,30,30^FDНоменклатура: Печенье^FS
|^FO50,100^BCN,60,Y,N,N^FD12345678^FS
|^XZ";
Чтобы отправить этот текст на принтер, можно воспользоваться методом RAW-печати. Самый надежный способ для сетевых принтеров — отправка данных напрямую на IP-адрес принтера через порт 9100. Это позволяет избежать любых проблем с очередями печати Windows и принт-серверами.
Пользователи часто спрашивают: «Можно ли вывести таблицу командами ZPL?». Да, это возможно, хотя и требует ручного расчета координат. Для рисования линий таблицы используется команда ^GB (Graphic Box).
Разберем пример формирования «сетки» для таблицы:
// Рисуем прямоугольник (рамку таблицы)
// ^GB(ширина),(высота),(толщина линий)
КомандаТаблицы = "^XA
|^FO50,10^GB700,300,3^FS
|^FO50,100^GB700,3,3^FS // Горизонтальная линия (разделитель шапки)
|^FO150,10^GB3,300,3^FS // Вертикальная линия
|^FO70,50^A0N,30,30^FD№^FS
|^FO180,50^A0N,30,30^FDНаименование^FS
|^XZ";
Если таблица слишком сложная или динамическая, рассмотрим альтернативный вариант: сформировать макет в 1С, сохранить его как картинку (BMP) и отправить на принтер через команду ^GF (Graphic Field). Однако помните, что это замедлит печать.
Проанализируем ситуацию, когда вместо русских букв принтер выдает пустые места или непонятные символы. Это происходит потому, что стандартные шрифты Zebra не поддерживают кириллицу по умолчанию. Для решения проблемы выполним следующие действия:
^CI28, которая переключает принтер в режим работы с UTF-8.Swiss 721). Вызов шрифта будет выглядеть так: ^A@N,30,30,E:CYRILLIC.TTF.Если принтер печатает половину этикетки или пропускает пустые ленты, скорее всего, сбились настройки датчика. Разберем процесс калибровки. На большинстве моделей Zebra необходимо зажать функциональную кнопку (обычно Feed) при включении и держать её до тех пор, пока индикатор не мигнет определенное количество раз (см. инструкцию к конкретной модели).
Также проверьте параметр Print Mode (Режим печати):
Tear-off (Отрывание) — этикетка останавливается так, чтобы её было удобно оторвать вручную.Cutter (Резак) — если у вашего принтера установлен модуль обрезки, используйте команду ^MMC, чтобы нож срабатывал после каждой напечатанной этикетки.Важный совет: Используйте специализированные утилиты, такие как Zebra Setup Utilities. В них есть окно «Direct Communication», где вы можете отправить ZPL-код и мгновенно увидеть результат, не тратя время на отладку кода внутри 1С. Это значительно ускоряет процесс разработки сложных макетов с таблицами.
Подводя итог, выбор метода печати зависит от ваших задач. Если этикетка простая и печатается редко — используйте обычный макет 1С и Windows-драйвер. Если же требуется массовая печать тысяч этикеток в день с гарантированным считыванием штрихкодов — переходите на ZPL. Мы надеемся, что эти рекомендации помогут вам настроить стабильную печать на вашем предприятии.