Работа с принтером

Для использования принтера требуется передать наборы заголовков, в зависимости от желаемого способа использования принтера.


Общее

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

Т.к. позиционирование построчное и основано на максимальном кол-ве символов в строке, имеется возможность передать кол-во символов для правильного формирования чека под конкретные размеры путем передачи заголовка printer.spl. Значение по умолчанию для данного заголовка - 48

Процесс вывода на печать выглядит следующим образом:

  • Осуществляется подключение к печатающему устройству
  • Совершается запрашиваемая операция
  • Осуществляется вывод на печать сформированных данных

В случае возникновения ошибки на последнем этапе (вывод на печать), возвращается ошибка со всеми данными по совершенной операцией в поле op_data структуры.

Все данные передаются в кодировке CP866 и для корректного отображения данных на бумажном чеке, требуется, чтобы в принтере кодировкой по умолчанию была установлена кодировка CP866, либо требуется передача заголовка printer.cp866

Принтер выбирается на основе printer.* заголовков в следующей приоритетности:

  • USB
  • Dummy

Если заголовки первого принтера не были найдены - будет попытка найти следующий принтер. Dummy принтер всегда имеет низший приоритет.


USB-принтер

Для работы с USB принтером требуется передача двух заголовков:

  • printer.usb.vendor - строковое представление vendorId устройства
  • printer.usb.product - строковое представление productId устройства

Перед любой операцией печати с использованием USB принтера, программная касса "забирает" контроль над USB устройством. В случае, если программной кассе не удалось этого сделать, будет возвращена ошибка с префиксом USB_

В случае, если требуется вывести какую-то информацию на принтер до или после печати - USB устройство доступно для подключения соответственно ДО выполняемой операции и после ее завершения


Очередь печати Windows

Данный способ работает только на ОС Windows с принтерами, которые поддерживают печать через очередь печати.

Для отправки чека в очередь печати требуется передача заголовка printer.spool.name с указанием наименования принтера/очереди печати.


Dummy-принтер

Данный тип принтера не выводит ничего на печать. Для задействования требуется передача заголовка printer.dummy с любым значением


Delayed принтер

Данный тип принтера не выводит ничего на печать на принтер, а вместо этого помечает документ для отложенной печати.

Для использования этого типа принтера требуется передать заголовок printer.delayed с тем же идентификатором, что будет передан в printer.delayed.id

При использовании данного способа требуется передача дополнительного заголовка: printer.delayed.id c идентификатором для последующей печати. В качестве идентификатора можно использовать номер следующего документа в смене.

Печать отложенного чека может быть совершена с помощью метода print_delayed