Печать штрихкодов — критически важный процесс для любого торгового или складского предприятия. Внедрение маркировки, штрихкодирования номенклатуры, документов и упаковочных листов требует безупречной четкости выводимых символов. Если принтер печатает штрихкод с малейшим размытием или в серых тонах, сканеры на рабочих местах или ТСД (терминалы сбора данных) попросту не смогут его распознать.
Часто пользователи 1С сталкиваются с проблемой: на качественных офисных принтерах (например, линейки HP LaserJet Enterprise) штрихкоды выводятся с идеальной контрастностью, а на бюджетных МФУ, таких как Xerox WorkCentre 3025, линии штрихкода получаются блеклыми, уходят в градации серого и сглаживаются. В этой статье мы подробно разберем природу данной проблемы и рассмотрим эффективные методы ее решения.
Для начала проанализируем ситуацию и поймем, почему Xerox WorkCentre 3025 ведет себя иначе, чем более дорогие принтеры от HP. Модель Xerox 3025 относится к классу так называемых GDI-принтеров (Host-based). Это означает, что у принтера нет собственного мощного процессора и встроенного интерпретатора языков описания страниц (PCL или PostScript). Рендеринг (обработка и растровое построение) печатной страницы полностью происходит на стороне компьютера силами его процессора и драйвера операционной системы Windows. На принтер отправляется уже готовый растровый массив данных.
Когда внешняя компонента «1С:Предприятие» генерирует штрихкод, она формирует его в виде графического объекта (картинки). Несмотря на то что визуально штрихкод состоит только из черного и белого цветов, операционная система и драйвер принтера часто воспринимают это изображение как полноцветную или серую графику высокого разрешения. При обработке такой графики драйвер Xerox по умолчанию применяет алгоритм полутонового сглаживания (дизеринг/halftoning). Он пытается сгладить резкие переходы между черными и белыми линиями, чтобы картинка выглядела мягче. В результате черные полосы штрихкода становятся темно-серыми, а тонкие белые промежутки заполняются мелкими серыми точками. Сканер штрихкодов воспринимает такую картину как грязное серое пятно.
Рассмотрим детально три основных способа борьбы с этой проблемой: программную настройку в 1С, конфигурацию драйвера принтера и особенности работы в терминальных сессиях (RDP).
Самый надежный и быстрый способ решить проблему размытия графики на уровне платформы «1С:Предприятие» — это принудительный перевод выводимого документа в черно-белый режим. В платформе 1С для этого предусмотрено специальное свойство объекта ТабличныйДокумент под названием ЧерноБелаяПечать.
Если это свойство установлено в значение Истина, платформа 1С принудительно преобразует все графические элементы документа (включая картинки штрихкодов, формируемые внешними компонентами) в строго монохромный 1-битный формат еще до передачи задания в подсистему печати Windows. Драйвер принтера Xerox получает на вход абсолютно контрастное изображение, где каждый пиксель может быть либо чисто черным (код 0,0,0), либо чисто белым (код 255,255,255). Алгоритмы сглаживания и полутонов в этом случае отключаются автоматически, и штрихкод печатается с максимальной резкостью.
Проанализируем пример кода, который необходимо добавить в процедуру печати соответствующего документа (например, в модуле менеджера или в модуле команды печати):
// Создаем или получаем табличный документ печатной формы
ТабДокумент = Новый ТабличныйДокумент;
// Вызываем стандартное заполнение макета данными
Документы.РасходныйОрдерНаТовары.ЗаполнитьТабличныйДокументПечати(ТабДокумент, СсылкаНаОбъект);
// Включаем режим жесткой черно-белой печати для устранения серого сглаживания
ТабДокумент.ЧерноБелаяПечать = Истина;
// Отправляем документ на печать или выводим на просмотр
ТабДокумент.Показать("Печать расходного ордера");
Применение свойства ЧерноБелаяПечать = Истина гарантирует, что принтер не будет использовать градации серого при выводе картинок штрихкодов, даже если в системе установлены стандартные настройки печати по умолчанию.
Если у вас нет возможности или прав для изменения программного кода конфигурации 1С (например, если база находится на поддержке вендора и изменения нежелательны), решить проблему можно точечной настройкой драйвера принтера на конечном рабочем месте. Очень важно использовать именно оригинальное программное обеспечение от производителя, а не стандартный базовый драйвер класса Microsoft IPP.
Разберем по шагам процесс настройки оригинального драйвера Xerox WorkCentre 3025 Windows Print Drivers Utilities:
После сохранения этих настроек драйвер начнет аппаратно повышать контурную резкость передаваемых растровых изображений, что позволит успешно сканировать штрихкоды даже без программных правок в 1С.
В современных архитектурах учетных систем базы 1С часто разворачиваются в удаленных дата-центрах, а пользователи работают через подключение по протоколу RDP. Это вносит дополнительные искажения в процесс печати.
При использовании стандартного механизма проброса принтеров TS EasyPrint, сервер Windows Server преобразует печатную форму 1С в промежуточный формат XPS, сжимает его для передачи по сети, а затем клиентский компьютер распаковывает этот поток и передает локальному драйверу Xerox. В процессе сжатия мелкие элементы штрихкода могут подвергаться деструктивному сжатию (по аналогии со сжатием JPEG), что гарантированно приводит к размытию краев штрихов.
Для минимизации искажений при печати через RDP выполним следующие действия:
gpedit.msc). Перейдите по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров. Установите параметр «Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола» в состояние «Отключено».Комбинация этих трех методов — программной установки свойства ЧерноБелаяПечать = Истина, тонкой настройки контурной резкости в оригинальном драйвере и корректной организации печати в терминальной сессии — раз и навсегда решит проблему блеклых штрихкодов на принтере Xerox 3025, обеспечив их мгновенное и безошибочное считывание любыми сканирующими устройствами.