Работа с принтером
Для использования принтера требуется передать наборы заголовков, в зависимости от желаемого способа использования принтера.
Общее
Печать осуществляется путем построчного формирования для последующей печати, добавлением стилей, преобразованием в набор 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