Principales respuestas
Ticket de 200 lineas o mas con PrintDocument

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;
}
}
Respuestas
-
Deleted
- Propuesto como respuesta Juan MondragónModerator lunes, 5 de febrero de 2018 16:59
- Marcado como respuesta Limberg2 martes, 6 de febrero de 2018 10:41
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 ?
-
-
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
-
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;
}
}
} -
Deleted
- Propuesto como respuesta Juan MondragónModerator lunes, 5 de febrero de 2018 16:59
- Marcado como respuesta Limberg2 martes, 6 de febrero de 2018 10:41
-
-
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