Problema imprimiendo con una Epson LX 810 (matriz de punto)

02/11/2007 - 17:08 por Fernando Briano | Informe spam
Buenas tardes,
Tengo un programa hecho en C#, donde debo imprimir unos recibos en una
Epson LX-810. Las hojas ya vienen impresas con el formato de los recibos
y yo debo imprimir los datos sobre ella.
Estoy usando un PrintDocument, al que le asigno un tamaño de papel

System.Drawing.Printing.PaperSize papel = new
System.Drawing.Printing.PaperSize("documento", 744, 266);
PrintDocument.DefaultPageSettings.PaperSize = papel;
PrintDocument.DefaultPageSettings.Margins = new
System.Drawing.Printing.Margins(0,0,0,0);
PrintDocument.OriginAtMargins = true;

Los datos a imprimir los mando a la impresora con:
e.Graphics.DrawString

El problema que tengo es que a la primera impresión, le deja un margen
de aproximadamente 1cm, pero a las siguientes no, por lo que me resulta
imposible mandar a imprimir varias veces, ya que se desfasa totalmente
la hoja con la impresión. En otras palabras, la coordenada 0,0 desde el
programa se muestra en la hoja en 1,1 aproximadamente, pero solo en la
primera impresión.
Debería eliminar ese margen, ya que se van a seguir imprimiendo hoja
tras hoja, y debería siempre poder imprimir continuamente sin cambiar el
papel ni desfasarse. No he podido encontrar solución aún.
Desde ya agradezco cualquier ayuda.

Fernando Briano
 

Leer las respuestas

#1 RFOG
02/11/2007 - 18:04 | Informe spam
Un palo de ciego: ¿Y si mandas a imprimir la primera con coordenadas
negativas, es decir, en lugar de componer la hoja partiendo de 0,0 no lo
haces partiendo de -1,-1? (Al menos en una pantalla se puede hacer -las
coordenadas negativas se corresponden con un monitor situada a la izquierda
o arriba del principal).

De todos modos, supongo que habrás mirado que en las opciones del driver no
haya algún valor de "margen de inicio" o algo así.

¿Es una matricial? Si es así en las configuraciones internas -generalmente
se accede a ellas encendiendo la impresora apretando algún botón- seguro que
tiene algo de eso. Mi Fujitsu que EPD lo tenía (aunque cuando activaba que
no lo hicier enredaba el papel porque no quedaba sujeto por la ménsula
superior y el cabezal lo arrastraba).

Microsoft Visual C++ MVP
==Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
Dios existe; pero no tiene ninguna prisa de hacerlo saber.

"Fernando Briano" wrote in message
news:
Buenas tardes,
Tengo un programa hecho en C#, donde debo imprimir unos recibos en una
Epson LX-810. Las hojas ya vienen impresas con el formato de los recibos y
yo debo imprimir los datos sobre ella.
Estoy usando un PrintDocument, al que le asigno un tamaño de papel

System.Drawing.Printing.PaperSize papel = new
System.Drawing.Printing.PaperSize("documento", 744, 266);
PrintDocument.DefaultPageSettings.PaperSize = papel;
PrintDocument.DefaultPageSettings.Margins = new
System.Drawing.Printing.Margins(0,0,0,0);
PrintDocument.OriginAtMargins = true;

Los datos a imprimir los mando a la impresora con:
e.Graphics.DrawString

El problema que tengo es que a la primera impresión, le deja un margen de
aproximadamente 1cm, pero a las siguientes no, por lo que me resulta
imposible mandar a imprimir varias veces, ya que se desfasa totalmente la
hoja con la impresión. En otras palabras, la coordenada 0,0 desde el
programa se muestra en la hoja en 1,1 aproximadamente, pero solo en la
primera impresión.
Debería eliminar ese margen, ya que se van a seguir imprimiendo hoja tras
hoja, y debería siempre poder imprimir continuamente sin cambiar el papel
ni desfasarse. No he podido encontrar solución aún.
Desde ya agradezco cualquier ayuda.

Fernando Briano

Preguntas similares