Хорошее: я создаю FlowDocument в своем приложении и отправляю его на термопринтер для чеков Star Micronics TSP100, а также могу печатать штрих-коды, отправляя коды ESC напрямую на принтер.
Плохое: он автоматически обрезает бумагу после FlowDocument, прежде чем штрих-коды успеют распечатать.
Вопрос: есть ли лучший способ распечатать FlowDocument, чтобы он не сообщал принтеру, что печать завершена? Или чтобы какая-то часть этого запускала обработчик событий, чтобы я мог втиснуть свои команды штрих-кода, прежде чем он сообщит принтеру, что это сделано?
Вот где я сейчас:
Документ потока называется довольно изобретательно, «doc».
FlowDocument doc
Затем, конечно же, я добавляю в FlowDocument много всего. Затем я беру принтер и распечатываю FlowDocument:
string printerName = "Star TSP100 Cutter (TSP143)";
LocalPrintServer local = new LocalPrintServer();
PrintQueue rcptpq = local.GetPrintQueue(printerName);
Xps.XpsDocumentWriter xpsdw = PrintQueue.CreateXpsDocumentWriter(rcptpq);
IDocumentPaginatorSource dps = doc;
Если все сработало без ошибок (обработка ошибок не копируется - это то, что я прохожу), я выписываю квитанцию:
// print MOST of the receipt
xpsdw.Write(dps.DocumentPaginator);
Принтер обрезает здесь автоматически. Я этого не хочу. Я хочу, чтобы он вырезал после штрих-кода.
// print the bar code
RawPrinterHelper.SendStringToPrinter(printerName,"\x1b\x62\x2\x2\x30" + "MyUPC123\n");
// Cut the paper
RawPrinterHelper.SendStringToPrinter(printerName,"\x1b\x64\x02");
(RawPrinterHelper взят из образца SDK Star Micronics, и то, что он делает, говорит само за себя, по крайней мере, с моими комментариями, описывающими конкретные используемые коды.)
Я пробовал некоторые настройки в инструменте настройки TSP100 в отношении «Обнаружения конца страницы», но пока все, что мне удалось сделать, это отключить все обрезки или отключить явную команду «вырезать бумагу» в конце. Я не могу просто отключить первую резку.