Печать на матричном принтере - PullRequest
2 голосов
/ 20 июня 2011

Я печатаю отчет rdlc на матричном принтере с использованием этого кода .Отчет в формате квитанции.Я хочу, чтобы принтер остановился точно в том месте, где квитанция была полностью напечатана (т.е. конец текста, который должен быть напечатан), и не занимал остальную часть бумаги и ничего не печатал на ней.* Поскольку необходимо распечатать множество чеков и могут быть длинные очереди, конечному пользователю потребуется повторно загрузить бумагу (которая была потрачена впустую) обратно в принтер.Поэтому я ищу способ, с помощью которого принтер может остановить подачу бумаги, как только будет напечатан текст.

1 Ответ

3 голосов
/ 21 июня 2011

Звучит так, как будто вы спрашиваете, как печатать квитанции непрерывным потоком, а не постранично. Код, на который вы ссылаетесь, полностью ориентирован на страницу и ориентирован на страницу. Вы можете работать в системе просмотра с преобладанием страниц, но вам придется выполнять дополнительную работу.

Вы должны иметь возможность печатать несколько элементов на одной странице, изменив код PrintPage для вывода более одного фрагмента изображения на страницу. Вам нужно будет управлять смещением каждого прямоугольника, чтобы расположить 2-е изображение ниже 1-го, и вам нужно будет выяснить, что вы хотите сделать, чтобы следующая страница отчета не занимала место на текущей странице. Я ожидаю, что вывод будет обрезан до текущей страницы, поэтому, если вы рисуете за пределами страницы (за пределами конца страницы), ничего выводиться не будет.

Вы можете перейти к следующей странице, когда изображение следующего отчета не помещается в пространство, оставшееся на текущей странице.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...