Stampa su rotolo di carta

Sto usando C # con Winforms. Sto provando a stampare banconote su un rotolo di carta. La larghezza della carta è 3 pollici ma la lunghezza della carta è dynamic (è un rotolo di carta). La lunghezza dipende da quanti elementi ci sono nella lista. Per esempio in un acquisto se ci sono 100 oggetti venduti, allora sarà abbastanza lungo mentre per un singolo object acquistato sarebbe di piccola lunghezza.

Quando stampo il report, dopo il processo di fine stampa, la stampante espelle l’ultima pagina più del necessario. Espelle la carta fino al formato A4. Voglio stampare le righe richieste, quindi interrompere la stampa. Uso un rotolo di carta, non A4 o A3 e una stampante Epson LQ-300 + II.

Per essere più specifici, la stampa viene sempre eseguita su unità di dimensioni di pagina. Se imposto che la pagina sia 3in x 8in, finisco sempre con una stampa multipla lunga 8 pollici. Se ho una fattura da 9 pollici da stampare, finisco con una stampa da 16 pollici, sprecando 7in di carta. Come posso stampare con l’ultima pagina solo per il tempo necessario?

Ecco il codice:

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

Hai provato a utilizzare una pagina lunga solo “una riga”?

Ometti il ​​bordo superiore e inferiore e puoi stampare senza sosta.

Ora aggiungi un po ‘(quindi la pagina può essere strappata) ed espellilo.

Prova questo:

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

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

È anche ansible regolare il formato della carta al volo. Meno lavoro per farlo una riga per pagina, ma immagino che questo produrrebbe un’anteprima di stampa più bella se qualcuno dovesse avere una causa per farlo:

 printdoc.DefaultPageSettings.PaperSize.Height += lineheight; 

Ecco come è ansible definire un formato di carta personalizzato e utilizzarlo nel report.

Aprire la cartella della stampante (dal Pannello di controllo).

Apri Proprietà server dal menu file. Si aprirà la finestra di dialogo Proprietà stampante e server .

Seleziona Verifica Crea un nuovo modulo

Specifica l’altezza della larghezza della pagina. Ti suggerisco di fare la tua altezza 3 pollici.

Ora fai clic sul pulsante Salva modulo .

La tua pagina personalizzata è pronta.

impostare questa carta come formato carta predefinito sia nel report che nelle proprietà della stampante.

Ora sei a posto.

È inoltre ansible utilizzare l’opzione di anteprima di stampa per completare questo processo.

 // This is for the print preview event private void printPreviewDialog1_Load(object sender, EventArgs e) { int j = 0; z = 185; while (j < dataGridView1.Rows.Count) { j += 1; z += 30; } z += 60; PaperSize pkCustomSize1 = new PaperSize("First custom size", 350, z); printDocument1.DefaultPageSettings.PaperSize = pkCustomSize1; } // This is the loop for generating print Document private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int i = 0; //For Gridview Row Count int sno = 1; //For Grid Serial Number e.Graphics.DrawString( "HEADING", new Font("Calibri", 20, FontStyle.Bold), Brushes.Black, new Point(100, 5)); e.Graphics.DrawString( "Address", new Font("Calibri", 12, FontStyle.Bold), Brushes.Black, new Point(75, 35)); int y = 185; //For Grid y axis start to print while (i < dataGridView1.Rows.Count) { e.Graphics.DrawString( sno.ToString(), new Font("Calibri", 10, FontStyle.Bold), Brushes.Black, new Point(10, y)); //For Serial Number e.Graphics.DrawString( dataGridView1.Rows[i].Cells[1].FormattedValue.ToString(), new Font("Calibri", 10, FontStyle.Bold), Brushes.Black, new Point(240, y)); //This is for Trim content to next line Graphics df1 = e.Graphics; SizeF ef1 = df1.MeasureString( dataGridView1.Rows[i].Cells[0].FormattedValue.ToString(), new Font(new FontFamily("Calibri"), 12F, FontStyle.Bold), 200); //160 df1.DrawString( dataGridView1.Rows[i].Cells[0].FormattedValue.ToString(), new Font(new FontFamily("Calibri"), 12F, FontStyle.Bold), Brushes.Black, new RectangleF(new PointF(60.0F, y), ef1), //350.0 StringFormat.GenericTypographic); i += 1; sno += 1; y += 30; } e.Graphics.DrawString( "------------------------------------------------------------------------------------", new Font("Calibri", 10, FontStyle.Bold), Brushes.Black, new Point(0, y)); e.Graphics.DrawString( "Total Amount-:" + TotalAmnt_txt.Text, new Font("Calibri", 10, FontStyle.Bold), Brushes.Black, new Point(150, y+=20)); e.Graphics.DrawString( "------------------------------------------------------------------------------------", new Font("Calibri", 10, FontStyle.Bold), Brushes.Black, new Point(0, y+=20)); e.Graphics.DrawString( "***Care For You ****", new Font("Calibri", 10, FontStyle.Bold), Brushes.Black, new Point(150, y += 20)); i = 0; sno = 1; }