Estoy usando C# con Winforms. Estoy tratando de imprimir las facturas en un rollo de papel. El ancho del papel es 3en pero la longitud del papel es dinámica (es un rollo de papel). La longitud depende de cuántos artículos hay en la lista. E. g. en una compra, si hay 100 artículos vendidos, a continuación, va a ser bastante largo rollo mientras que para un solo artículo que se compra sería de pequeña longitud.

Al imprimir el informe, después de la final de trabajo, la impresora expulse la última página más de lo que necesita. Es expulsar el papel tan larga como la de tamaño A4. Quiero imprimir las líneas requeridas, a continuación, detener la impresión.
Yo uso un rollo de papel, no se A4 o A3 y un Epson LQ-300 + II de la impresora.

Para ser más específicos, la impresión es siempre hacerse a la página-tamaño de las unidades. Si puedo configurar la página para ser 3en x 8 pulgadas, entonces siempre termino con una impresión de que es un múltiplo de 8 pulgadas de largo. Si tengo un 9 en proyecto de ley para imprimir, termino con una 16in impresión, perdiendo 7en de papel. ¿Cómo puedo imprimir la última página a la que sólo el tiempo que sea necesario?

Aquí está el código:

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;
        }
  • ¿Cuál es su pregunta? Usted debe ser capaz de seguir imprimiendo hasta que esté hecho. Entonces usted estará terminado. Esa es la ventaja de rollo de papel.
  • +1, solo mantenerse en el dibujo hasta que esté hecho y terminar con una declaración para cortar el papel. Yo solía hacer esto utilizando GDI, no hay experiencia con Crystal reports
InformationsquelleAutor Thunder | 2010-12-06

4 Comentarios

  1. 17

    ¿Has probado el uso de una página que es sólo «una línea» de largo?

    Omitir la parte superior y el borde inferior, y usted puede imprimir sin parar.

    Ahora agregue un poco (de Modo que la página puede ser arrancadas) y expulsar el que.

    Intente esto:

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

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

    • Dadas las limitaciones, esto parece la más lógica respuesta.
    • ¿Cómo podemos definir una sola línea de papel?, He visto sólo los tamaños estándar en la configuración de la impresora.
    • Ver arriba……
    • ¿hay alguna opción alternativa en vb.net sin especificar la altura como una línea? Si no lo es, entonces ¿qué tipo de codificación que se utilizan en el terminal de punto de venta para imprimir los recibos que también ancho fijo y la variación de la altura de cada proyecto de ley?
    • Chicos, estoy luchando con esto. Dónde está la línea de arriba, veo que tiene establecer la altura 200 ¿cómo es que una línea.
  2. 5

    También puede ajustar el tamaño de papel en la marcha. Menos trabajo para hacer una línea por la página, pero me imagino que esto produciría una mejor vista previa de impresión si alguien hubiera causa para ello:

    printdoc.DefaultPageSettings.PaperSize.Height += lineheight;
    • este código no funciona para mí. en el que caso de que yo debería especificar esta codificación?.. he utilizado en la impresión de la página de sucesos..
    • Te gustaría hacer que a medida que dibuja cada línea. Y que te gustaría empezar con uno personalizado línea de tamaño de papel como el aceptado respuesta sugerida. La altura no es escribible por los tamaños de papel estándar.
  3. 0

    Aquí es cómo se puede definir un tamaño de papel personalizado y utilizarlo en su informe.

    Abrir carpeta de la impresora (en Panel de Control).

    Abrir Propiedades del Servidor de desde el menú archivo. Se abrirá de la Impresora y el Servidor de Propiedades cuadro de Diálogo.

    Seleccione Comprobar Crear un nuevo Formulario

    Especificar el ancho de la página de la altura. Le sugiero que haga su altura de 3 pulgadas.

    Ahora haga clic en el Guardar Formulario botón.

    Su página personalizada está listo.

    establecer este papel como el tamaño de papel predeterminado tanto en el informe, así como en las propiedades de la impresora.

    Ahora que son buenos para ir.

    • debe tener al menos especificado qué sistema operativo está usando para ello.
  4. 0

    También puede utilizar la opción vista preliminar para completar este proceso.

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

Dejar respuesta

Please enter your comment!
Please enter your name here