Как напечатать спецсимволы и пиктограммы на чековом принтере или кассовом аппарате?

Программист IT и автоматизация бизнеса
← На главную

При попытке вывести на чековый принтер или фискальный регистратор нестандартные символы Юникода (например, карточные масти, значки иконки, стрелки или спецсимволы с кодами выше 255) устройство очень часто печатает знак вопроса ?. Разберем подробнее, почему возникают такие ограничения и какими способами можно напечатать нужные символы или изображения на кассовой ленте.

Выясним причину: почему касса печатает знак вопроса вместо спецсимволов

Проанализируем техническое устройство чековых принтеров и фискальных регистраторов. В отличие от обычных офисных принтеров, кассовые аппараты используют встроенный аппаратный генератор знаков (знакогенератор), прописанный прямо в прошивке устройства.

Работа с текстом в ККТ строится на основе однобайтовых таблиц кодировок (8-bit Code Pages, такие как CP866 или Windows-1251). Это означает, что касса распознает строго ограниченный набор из 256 символов (коды от 0 до 255). Платформа 1С формирует и передает текстовые строки в формате UTF-16 (Unicode). Когда драйвер торгового оборудования или сама касса получает символ с кодом за пределами однобайтовой таблицы (например, символ масти карточной бубны с кодом 9830), выполняется автоматическая замена нераспознанного символа на знак вопроса ?.

Способ 1. Печать чека через виртуальный драйвер принтера Windows (GDI режим)

Рассмотрим наименее трудоемкий способ вывода произвольных символов и шрифтов. Для этого кассовый аппарат или чековый принтер подключается к операционной системе не как фискальное устройство через драйвер ККТ, а как стандартный Windows-принтер (используя драйвер печати чеков POS / GDI).

  1. Установим Windows-драйвер для конкретной модели устройства или универсальный POS-драйвер принтера чеков.
  2. Настроим в 1С печать документа как на обычный локальный или сетевой принтер.
  3. Сформируем печатную форму с любыми Юникод-символами и графикой.

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

Способ 2. Вывод текстовой строки в виде графического изображения

Если требуется сохранить подключение устройства через специализированный драйвер ККТ, разберем альтернативный вариант — конвертацию текста со спецсимволами в картинку перед отправкой на печать.

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

Рассмотрим порядок действий при таком подходе:

  1. Формируем текстовую строку со спецсимволами.
  2. Программно рендерим эту строку в растровый монохромный файл формата BMP.
  3. Передаем полученную картинку в драйвер устройства с помощью команды печати изображения.

Способ 3. Загрузка пользовательских символов и логотипов по протоколу ESC/POS

Проанализируем возможности протокола управления чековыми принтерами ESC/POS. Большинство чековых аппаратов поддерживают переопределение таблицы символов (User-Defined Characters) и печать логотипов из энергонезависимой памяти (NVRAM).

  1. Загрузка клише/логотипа в NVRAM: через сервисную утилиту драйвера подготавливается и загружается небольшое черно-белое изображение (например, иконка или пиктограмма). В коде 1С вызов значка осуществляется отправкой короткой команды печати картинки по её индексу.
  2. Переопределение матрицы символов: с помощью команд ESC/POS можно задать пиксельную матрицу (например, 12х24 точки) для конкретного ASCII-кода и назначить его на один из неиспользуемых кодов из диапазона 32–126. После загрузки матрицы отправка данного кода будет выводить переопределенный знак.

Способ 4. Прошивка шрифтов и переключение кодовых таблиц

Выясним, как использовать встроенные возможности знакогенератора ККТ:

  1. В настройках драйвера и таблицах кассового аппарата проверим используемую кодовую страницу. Иногда в альтернативных кодовых таблицах (например, псевдографика DOS) присутствуют нужные символы рамки, стрелочки и базовые значки.
  2. Для некоторых моделей ККТ существует возможность модификации прошивки с заменой стандартного шрифта на пользовательский знакогенератор, содержащий нужные пиктограммы в пределах первых 255 кодов.
← На главную