Printing on roll paper

19,917

Solution 1

Have you tried using a page that is only "one line" long?

Omit the upper and lower border, and you can print non stop.

Now add a bit (So the page can be torn off) and eject that.

Try this:

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

            printDoc.DefaultPageSettings.PaperSize = pkCustomSize1

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

Solution 2

You can also adjust the paper size on the fly. Less work to do it one line per page, but I'd imagine this would produce a nicer print preview if anyone were to have cause to do that:

printdoc.DefaultPageSettings.PaperSize.Height += lineheight;

Solution 3

I'm using the VKP80II and what I do is i set the pagesettings.papersize to:

PaperSize PaperRoll= new PaperSize("Paper Roll", 300, 0);

automatically it prints the exact length that it needs to without me actually specifying the length

Share:
19,917
Thunder
Author by

Thunder

I am from Nepal.

Updated on June 07, 2022

Comments

  • Thunder
    Thunder almost 2 years

    I am using C# with Winforms. I am trying to print bills on a paper roll. The width of the paper is 3in but the length of the paper is dynamic (its a roll paper). The length depends on how many items are there in the list. E.g. in a purchase if there are 100 items sold then it will be quite long roll while for a single item purchased it would be of small length.

    When I print the report, after the end job, printer eject the last page more than I need. It eject paper as long as A4 size. I want to print the required lines, then stop printing. I use a roll of paper, not A4 or A3 and an Epson LQ-300 + II printer.

    To be more specific, printing is always done to page-sized units. If I set the page to be 3in x 8in then I always end up with a printout that is a multiple of 8in long. If I have a 9in bill to print, I end up with a 16in printout, wasting 7in of paper. How can I print with the last page being only as long as it needs to be?

    Here is the code:

    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;
            }