none
Ticket de 200 lineas o mas con PrintDocument RRS feed

  • Pregunta

  • Tengo problemas con la impresión, esta se corta en línea 54, impresora EPSON T20 II

    Por que se corta ?

    private void button1_Click(object sender, EventArgs e)
    {
        PrintDocument printDocument1 = new PrintDocument();
        printDocument1.PrintPage += pd_PrintPage;
        PrintDialog printDialog1 = new PrintDialog();
        printDialog1.Document = printDocument1;
        DialogResult result = printDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            printDocument1.Print();
        }
    }
    private void pd_PrintPage(object sender, PrintPageEventArgs e)
    {
        float pos_x = 10;
        float pos_y = 20;

        for (int i = 1; i < 200; i++)
        {
            e.Graphics.DrawString(i.ToString() + ".-  Nombre:", fuente, Brushes.Black, pos_x, pos_y, new StringFormat());
            pos_y = pos_y + 20;
        }
    }

    domingo, 4 de febrero de 2018 17:10

Respuestas

Todas las respuestas

  • esun tema senzillo pero para ayudarte necesito más info. Por ejemplo que quieres decir con que se te corta, el que ? la linea, la pagina ?, además necesito saber el tamaño del papel que usas para imprimir y que me confirmes que iteras 200 veces por que has medido que es lo que te cabe por tiquet no ?

    domingo, 4 de febrero de 2018 17:38
  • al mandar a la impresora, esta corta el papel y no termina de imprimir

    Probe enviando a PDF y solo envía 54 líneas al PDF

    El papel de la impresora es continuo tipo rollo.


    • Editado Limberg2 domingo, 4 de febrero de 2018 19:12 .
    domingo, 4 de febrero de 2018 18:18
  • No utilices eso, usa un libreria que se llama RawHelper es para enviar a imprimir directamente a la impresora asi no importara si mandas 100, 300, 500 lineas, yo lo uso desde ya hace años y para cualquier impresora de punto de venta

    Salu2


    Marvin E. Pineda

      ComboBoxMultiColumns

     NetBarControl

      TextEditor

    domingo, 4 de febrero de 2018 23:32
    Moderador
  • Muchas gracias Bisagra, tu código funciono muy bien,

    Ahora quiero adaptarlo con una lista de datos, para imprimir mis facturas.

    He intentando de esta manera pero me genera un numero infinito de paginas...

    int altura;

    private Font fuente = new Font("Arial", 12);
    List<_Producto> _productoList = new List<_Producto>();

    public afrm_PrintDocument()

    {
        InitializeComponent();
    }
    private void afrm_PrintDocument_Load(object sender, EventArgs e)
    {
        for (int i = 1; i <= 200; i++)
        {
            _Producto _producto = new _Producto();
            _producto.Descripcion = i.ToString() + ".- Nombre";
            _productoList.Add(_producto);
        }
    }
    private void button2_Click(object sender, EventArgs e)
    {
        PrintDocument printDocument1 = new PrintDocument();
        printDocument1.PrintPage += pd_PrintPage;
        printDocument1.BeginPrint += printDocument1_BeginPrint;
        PrintDialog printDialog1 = new PrintDialog();
        printDialog1.Document = printDocument1;
        DialogResult result = printDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            printDocument1.Print();
        }
    }
    private void printDocument1_BeginPrint(object sender, PrintEventArgs e)
    {
        PageSettings ps = ((PrintDocument)sender).DefaultPageSettings;
        altura = ps.PaperSize.Height;
    }
    private void pd_PrintPage(object sender, PrintPageEventArgs e)
    {
        float pos_x = 10;
        float pos_y = 20;
        foreach (_Producto item in _productoList)
        {
            e.Graphics.DrawString(item.Descripcion, fuente, Brushes.Black, pos_x, pos_y, new StringFormat());
            pos_y = pos_y + 20;

            pos_y = pos_y + 20;
            if (pos_y + 20 > altura)
            {
                e.HasMorePages = true;
                break;
            }
        }
    }

    lunes, 5 de febrero de 2018 13:52
  • Deleted
    lunes, 5 de febrero de 2018 14:02
  • Muchas gracias Bisagra, el código funciono a la perfección.


    • Editado Limberg2 martes, 6 de febrero de 2018 10:41 .
    martes, 6 de febrero de 2018 0:23
  • Hola, tendras una clase para descargar.

    Como hago si imprimo en un .rdlc en c#, como determino el alto del papel sino lo conozco pues no se cuantos items tendra una venta ?

    Tengo un codigo con rawprinterhelper, el tema es que lo manda directo a la impresora como texto por lo cual no puede enviar a imprimir un codigo qr, el logo, codigo de barras, etc.

    Agradeceria tu ayuda.

    Saludos, Armando.


    Armando

    lunes, 23 de julio de 2018 0:29