在卷纸上打印

Thu*_*der 24 .net c# printing gdi crystal-reports

我正在使用C#和Winforms.我正试图在纸卷上打印钞票.纸张的宽度为3英寸,但纸张的长度是动态的(它是卷纸).长度取决于列表中有多少项.例如,在购买时如果有100件商品售出那么它将是相当长的卷,而对于购买的单件商品它将是很小的长度.

当我打印报告时,在结束作业之后,打印机会弹出最后一页而不是我需要的页面.只要A4尺寸就可以弹出纸张.我想打印所需的行,然后停止打印.我使用的是一卷纸,而不是A4或A3和Epson LQ-300 + II打印机.

更具体地说,始终对页面大小的单元进行打印.如果我将页面设置为3英寸x 8英寸,那么我总是打印出8英寸长的打印输出.如果我要打印一张9英寸的钞票,我最终会打印出16英寸的纸张,浪费7英寸的纸张.如何打印最后一页只需要它就可以了?

这是代码:

private void printDoc_PrintPage(Object sender, PrintPageEventArgs e)
        {
            Font printFont = new Font("Courier New", 12);
            int y = 15;
            e.Graphics.DrawString("a Line", printFont, Brushes.Black, 0, y); y = y + 20;
            e.Graphics.DrawString(" Line", printFont, Brushes.Black, 0, y); y = y + 25;
            e.Graphics.DrawString(" Line", printFont, Brushes.Black, 0, y); y = y + 35;
            e.Graphics.DrawString(" Line", printFont, Brushes.Black, 0, y); y = y + 45;
        }
Run Code Online (Sandbox Code Playgroud)

Hei*_*eld 17

您是否尝试使用仅"一行"长的页面?

省略上下边框,可以不停打印.

现在添加一点(所以页面可以被撕掉)并弹出它.

试试这个:

            PaperSize pkCustomSize1 = new PaperSize("First custom size", 100, 200);

            printDoc.DefaultPageSettings.PaperSize = pkCustomSize1
Run Code Online (Sandbox Code Playgroud)

请参阅:http: //msdn.microsoft.com/en-us/library/system.drawing.printing.pagesettings.papersize.aspx


Kev*_*ker 5

您也可以即时调整纸张尺寸。每页只需要一行工作就可以减少工作量,但是我想如果有人有理由这样做,这将产生更好的打印预览:

printdoc.DefaultPageSettings.PaperSize.Height += lineheight;
Run Code Online (Sandbox Code Playgroud)