Как исправить мелкий шрифт цифр под штрихкодом и решить проблемы с печатью на принтере Zebra GK420 в 1С

Программист 1С v8.3 (Обычные формы) Управленческий учет Торговля и дистрибуция
← На главную

Печать этикеток и ценников из 1С на специализированных принтерах штрихкодов — одна из самых частых задач в сфере розничной и оптовой торговли. Однако в процессе настройки оборудования технические специалисты регулярно сталкиваются со специфическими проблемами: цифры под штрихкодом становятся слишком мелкими и нечитаемыми, либо сам штрихкод распечатывается некорректно и отказывается считываться сканером. Особенно остро эти проблемы проявляются при работе в терминальном режиме (через RDP) на популярных принтерах семейства Zebra ZDesigner GK420 (GK420d/GK420t).

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

Почему цифры под штрихкодом становятся слишком мелкими?

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

Основной источник проблемы кроется во взаимодействии компоненты печати штрихкодов (например, 1CBarCode.ocx) с подсистемой печати Windows (GDI) и драйвером принтера этикеток:

  1. Разница разрешений (DPI): Стандартный монитор компьютера имеет разрешение около 96 DPI (точек на дюйм), в то время как термоголовка принтера Zebra GK420 печатает с разрешением 203 DPI. При преобразовании векторного или TrueType-шрифта компоненты 1С под высокое физическое разрешение принтера происходит математический перерасчет. Если геометрические размеры графического контейнера штрихкода в макете малы, алгоритм компоненты принудительно уменьшает кегль шрифта (иногда до 2–4 пунктов), чтобы текст гарантированно уместился в рамки картинки штрихкода.
  2. Подмена шрифтов драйвером: По умолчанию в настройках драйвера Zebra ZDesigner включена оптимизация, которая пытается заменить стандартные шрифты Windows TrueType встроенными аппаратными шрифтами принтера (шрифтами ZPL/EPL) ради ускорения отправки данных. Поскольку встроенная сетка шрифтов Zebra жестко ограничена по размерам, система выбирает наиболее близкий по масштабу мелкий шрифт, превращая цифры в нечитаемый набор точек.
  3. Кэширование параметров печати: Принтеры Zebra чувствительны к изменению настроек "на лету". Изменение свойств шрифта в драйвере или в макете 1С может не применяться до тех пор, пока печатная форма не будет полностью закрыта, а в некоторых случаях требуется перезапуск самого сеанса 1С для очистки кэша принтера.

Решение 1: Вывод цифр штрихкода в отдельную ячейку макета

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

Рассмотрим этот процесс по шагам:

  1. Откроем конфигуратор 1С и найдем макет этикетки (или ценника), с которым возникают проблемы.
  2. Выделим графический объект штрихкода, нажмем правую кнопку мыши и перейдем в Свойства. В параметрах ActiveX-компоненты (или свойствах рисунка) снимем флаг Отображать текст (или установим свойство ОтображатьТекст = Ложь программно).
  3. Под рисунком штрихкода создадим отдельную строку ячеек табличного документа. Объединим их, чтобы ширина текстового поля соответствовала ширине штрихкода.
  4. В свойствах новой ячейки установим тип заполнения — Параметр (например, назовем его ТекстШтрихкода).
  5. Настроим для этой ячейки нужный шрифт (например, Arial или Courier New), установим жирное начертание и комфортный размер (8–10 пунктов). Теперь размер этого текста полностью управляется платформой 1С и не зависит от внутренних алгоритмов сжатия компоненты штрихкода.
  6. В модуле формирования этикетки добавим заполнение нового параметра.

Посмотрим на пример кода, реализующий этот подход при программном выводе макета:


// Получаем область макета этикетки
ОбластьЭтикетки = Макет.ПолучитьОбласть("СтрокаЭтикетки");

// Находим рисунок штрихкода в области
РисунокШК = ОбластьЭтикетки.Рисунки.Штрихкод;

// Управляем свойствами компоненты штрихкода напрямую
РисунокШК.Объект.ТипКода = 1; // Например, EAN13
РисунокШК.Объект.Сообщение = СтрокаШтрихкода;
РисунокШК.Объект.ОтображатьТекст = Ложь; // Отключаем генерацию мелкого текста под кодом

// Передаем значение штрихкода в обычную текстовую ячейку под рисунком
ОбластьЭтикетки.Параметры.ТекстШтрихкода = СтрокаШтрихкода;

// Табличный документ для вывода на печать
ТабДок.Вывести(ОбластьЭтикетки);

Решение 2: Настройка драйвера ZDesigner для печати текста как графики

Если вносить изменения в структуру макета 1С по каким-то причинам нельзя, необходимо скорректировать поведение самого драйвера принтера Zebra, заставив его обрабатывать шрифты Windows без подмены. Разберем по шагам, как настроить драйвер:

  1. Перейдем в панель управления Windows в раздел Устройства и принтеры.
  2. Найдем принтер ZDesigner GK420, кликнем правой кнопкой мыши и выберем Настройка печати (Printing Preferences).
  3. Перейдем на вкладку Dithering (Смешивание) или Параметры документа (зависит от версии драйвера) и найдем настройки обработки шрифтов.
  4. Установим режим загрузки шрифтов TrueType в значение Печатать как графику (Render text as graphics) или отключим параметр Использовать встроенные шрифты принтера.
  5. Дополнительно снимем флаг "Использовать высоту шрифта драйвера" и уберем разделение пробелов, если эти опции активны.
  6. Важно: После сохранения настроек драйвера обязательно закроем печатную форму в 1С. Снова откроем документ, вызовем печатную форму этикетки заново и отправим документ на печать. Настройки драйвера применятся только после обновления сеанса вывода графических данных.

Проблема со сканированием штрихкода и масштабированием

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

Штрихкод состоит из чередующихся черных и белых полос строго определенных пропорций. Принтер этикеток формирует изображение путем нагрева пикселей (точек) термоголовки. При разрешении 203 DPI ширина минимального штриха должна быть кратна физической точке нагревательного элемента принтера. Например, тонкий штрих равен 1 точке, средний — 2 точкам, толстый — 3 точкам.

Если в 1С в параметрах страницы установлен масштаб По ширине листа (или любой другой масштаб, отличный от 100%), платформа 1С перед отправкой на принтер пытается программно сжать или растянуть изображение. Драйвер принудительно пересчитывает ширину полос, округляя дробные пиксели. В результате тонкий штрих шириной в 1.4 точки округляется где-то до 1 точки, а где-то до 2 точек. Пропорции штрихкода искажаются, границы замыливаются, и сканер не может распознать структуру кодировки.

Решение 3: Верстка макета под масштаб 100%

Чтобы избежать геометрических искажений линий штрихкода при печати, необходимо соблюдать золотое правило верстки этикеток в 1С:

  1. Макет этикетки в конфигураторе должен изначально разрабатываться под физический размер этикетки в миллиметрах. Например, если используется лента 58х40 мм, ширина и высота колонок макета в 1С должны строго вписываться в эти границы.
  2. В свойствах макета (меню Файл — Параметры страницы) необходимо установить масштаб 100% (а не "По ширине страницы").
  3. Значения всех полей (левое, правое, верхнее, нижнее) в параметрах страницы должны быть равны 0.
  4. Штрихкод в макете не должен быть зажат границами ячеек. Всегда оставляйте небольшие поля (так называемую "тихую зону") справа и слева от штрихкода, иначе сканер не сможет определить начало и конец считывания графической последовательности.

Решение 4: Настройка печати в RDP-сессии (борьба с TS Easy Print)

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

По умолчанию Windows Server при подключении клиента использует технологию Terminal Services Easy Print. Этот механизм значительно упрощает жизнь системным администраторам, избавляя от необходимости устанавливать драйверы принтеров на сервере. Однако для печати графики высокой точности (каковой и является штрихкод на 203 DPI) Easy Print не подходит. Он преобразует этикетку в формат XPS на сервере, передает файл на клиентский ПК, где локальный драйвер растрирует его обратно. В процессе этой двойной конвертации линии штрихкода искажаются, теряют четкость и перестают читаться сканером.

Рассмотрим порядок действий для настройки стабильной печати в RDP:

  1. Выравнивание версий драйверов: Установите на сервере 1С абсолютно ту же версию драйвера Zebra ZDesigner, которая установлена на локальном компьютере пользователя. Архитектура драйвера (x86 или x64) также должна соответствовать разрядности операционных систем.
  2. Отключение Easy Print для принтеров этикеток: На сервере терминалов через редактор локальной групповой политики (gpedit.msc) перейдите по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров. Найдите политику "Использовать в первую очередь драйвер принтера Easy Print служб удаленных рабочих столов" и переведите ее в состояние Отключено (Disabled).
  3. После этого при подключении к терминальному серверу система попытается сопоставить принтер по имени драйвера и будет использовать "родной" драйвер Zebra на сервере. Это обеспечит прямую передачу EMF/RAW данных печати без промежуточного размытия графики, и штрихкоды начнут сканироваться мгновенно.

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

← На главную