Сообщение bvsoft » 07 сен 2016, 22:57
Вот такой интересный вопрос всплыл: Раньше никогда не было такого вопроса, потому что чек или отчет фактически полностью формируется самим драйвером, а я лишь говорю ему, что сумма чека такая-то, а набор товаров такой-то, то и чек как-то там сам выдавал заголовки и окончания. И тут, когда потребовалось печать строки и картинки, вылез весь этот геморрой. Выглядит так:
Возьмем драйвер АТОЛ. Хочу напечатать текст и картинку с QR-кодом. Делаю это после окончания печати программой стандартного чега. Выполняю:
VarDevice.Caption := 'asdfasdfasdf';
VarDevice.Caption := '2352345234345';
.... и так далее, например
VarDevice.Barcode := .....
VarDevice.PrintBarcode..
... и так далее
В конце надо отрезать, выполняю VarDevice.PartialCut;
Что получаю в итоге:
После отрезки предшествущего нашей печати чека я вижу на вновь распечатанном свободном своем тексте стандартный заголовок , он был заготовлен, оказывается, предыдущим чеком, лежит под линией отреза, спрятан в аппарате еще. Далее вижу мой набранный текст, мои картинки и все такое. Дальше вижу, что отрезание, которое я задавал в конце, произошло где-то за несколько строк до окончания моих текстов, а не в самом конце. Более того, когда попытаюсь напечатать следующий чек или отчет, то увижу, что он будет без заголовка. Хрень полная, короче. Логика непонятная. То есть любой стандартный чек или отчет распечатывается, отрезается, а под линией отреза печатает заголовок для следующего чека, и следующий чек (или отчет) уже подается без заголовка, ибо он уже распечатан под линией отреза, а вот в конце своей печати он делает то же самое для следующего чека: после линии отреза печатает его заголовок.
Я был обескуражен, но методом тыка и чтения описания обнаружил функцию PrintHeader, теперь делаю в конце:
VarDevice.PrintHeader;
VarDevicde.partialCut;
получаю именно такую логику, вроде: в конце моего свободного текста печатается окончание стандартное для чеков, потом начало следующего чека (или отчета), а между ними - отрезание. Внешне все красиво, правда, не уверен, что это вообще правильно. Вот и вопрос: кто-нибудь может подсказать, как вы решаете проблему отрезания и печати заголовка для следующего чека, точно так же? или я где-то запутался?
И вот второй вопрос: все те же проблемы вылезли при печати с помощью драйвера Штрих-М, однако аналогичной функции печати заголовка я не нашел, а точнее - нашел PrintDocumentTitle, но что она делает, я так и не понял, но явно не то, что я предполагал по аналогии с драйвером АТОЛ. Вышел из ситуации так: распечатать сначала свободный текст, потом стандартный чек кассовый, и тогда получил бы на руках чек, где сначала идет заголовок, распечатанный предыдущим чеком, после мой свободный текст, после - состав чека этого, но без заголовка, после - окончание чека, отрез, заголовок следующего, исполненные стандартным чеком без моего участия. Но это решение мне не вполне нравится, ибо для других решений, когда мне надо работать, например, с платежными картами и печатать их содержимое, эта методика не подходит, ибо чек там еще режется, и одна часть забирается продавцом, а вторая отдается покупателю, и покупатель получит распечатку без заголовка.
Спасибо заранее за ответы.