2011-06-20 71 views
1

我正在使用this code将点阵式打印机报告打印到点阵式打印机。报告采用票据收据的格式。我想要的是,打印机应该在收据完全打印的位置(即要打印的文本的末尾)完全停止,并且不要接收纸张的其余部分并且不在其上打印任何东西。打印到点阵式打印机

当打印收据的负荷并且可能会出现长队时,如果最终用户必须将纸张(已浪费)重新装回打印机,将会非常耗时。因此,我正在寻找打印机可以在要打印的文本完成后立即停止进纸的方式。

+0

什么打印机型号/型号?通常它是打印机专用的,它在用户手册中有介绍。虽然以前对相关(但不一定相似)问题的回答可能会对您的情况有所了解。 http://stackoverflow.com/questions/449777/print-on-dot-matrix-printer-in-net – David

+0

这是wipro!在用户手册中你的意思是什么?就像让它停在那里的方式一样?我需要更改一些设置吗? – Saurabh

+0

该代码似乎将其用作普通的Windows打印机。这意味着您应该将收据结合在一个页面上。 –

回答

3

这听起来像你要求的是如何打印收据作为一个连续的流,而不是逐页。您链接的代码完全是页面驱动的和面向页面的。你可以在一个以页面为主的视图系统中工作,但你将不得不做额外的工作。

您应该可以在一个页面上打印多个东西,方法是更改​​PrintPage代码以在每个页面上输出多个图像块。您必须管理每个矩形的偏移量,以便将第二个图像放置在第一个图像的下方,并且您必须弄清楚下一个报告页面的内容不适合当前页面上剩余的空间。我期望输出将被剪切到当前页面,所以如果您在页面边界之外(超过页面末尾)绘制,则不会输出任何内容。

当下一个报告图像不适合当前页面上剩余的空间时,您可以选择前进到下一页。

或者,您可以打印尽可能多的页面,然后在下一页的顶部打印该报告图像的其余部分。为此,您需要计算页面1上的剩余空间与报告图像矩形的交集,并保存该交集的高度。结束该页面。当页面2滚动时,再次打印相同的报告图像,但是这次将输出矩形按前一页上打印的矩形的高度进行偏移。这是假设剪贴矩形已经在打印设备句柄上(很有可能)。

像这样在不同页面上分割报表的缺点是,最终可能会出现图形或甚至在页面之间被切断或分割的文本行。这些将很难阅读。如果您知道字体高度和行间距以及报表的布局方式,我想您可以计算出猜测文字行在输出矩形中的位置,并将您的输出矩形四舍五入到行高的整数倍,但这已经深入到了哈克克鲁德领域。