PDA

Ver la Versión Completa : impresion grafica mediante codigos de escape


emimarz
06-09-2007, 16:26:21
hola muchachos

les comento en la empresa donde trabajo me mandaron hacer un programita .... bueno mejor voy a empezar por el comienzo

en donde trabajo tienen un programa de facturacionque imprime en papel continuo

imprime perfectamente en dos vias cuando estas son un papel grande (una hoja de 9 " X 12 " fanfold comun)

pero los driver de windows no me permiten achicar el tamaño de la hoja
para que se preguntaran quiero eso

es que tengo que hacer la impresion de facturas en tres vias el el tamaño de la hoja es 3/4 el de una comun o tambien tengo que imprimir 3 vias de medio fanfold

el problema consiste en que en cuanto mando a imprimir una linea y finalizo la impresion windows manda un new page
entonces la hoja avanza hasta la siguiente hoja
pero no eso no es lo que quieren porque el usuario debe cortar la factura y luego con la perilla tienen que mover manualmente la hoja hacia atras hasta llegar a la pocision de imprimir

la impresora es una LX-300

por eso intento hacer un programita para manejar la impresora mediante codigos de escape

ya pude imprimir algunas cosas mediante los mismos pero no pude decirle a la misma que imprima un texto en las coordenadas X e Y (dado que por coordenadas es mas esacta la impresion de facturas)

ya que en mi trabajo utilizan un objeto de impresion que le dicen las coordenadas e imprimen

me dijeron que se hace con el modo grafico ed la impresora

pero sigo sin entender como decirle que lo imprima en las coordenadas X e Y

estoy eternamente agradecido si alguien pudiera darme una mano
por favor

Emiliano

basti
06-09-2007, 20:03:01
Para la impresión gráfica puedes usar el objeto printer, pero si lo que quieres es imprimir directamente con codigos escape aquí (http://www.epson.co.uk/support/manuals/pdf/ESCP/Part_1.pdf) tienes una referencia de ESC/P de Epson.

emimarz
06-09-2007, 20:08:01
Para la impresión gráfica puedes usar el objeto printer, pero si lo que quieres es imprimir directamente con codigos escape aquí (http://www.epson.co.uk/support/manuals/pdf/ESCP/Part_1.pdf) tienes una referencia de ESC/P de Epson.

no quiero sonar mal pero no fui suficientemente claro con la carta que escribi arriba ( me parece que no la has leido) si me sirviera el objeto printer ya lo hubiera usado

y ese manual ya lo tengo pero no he podido dar una tecla de como se le envia los comandos graficos si pudieras darme una mano estaria muy agradecido

paldave
06-09-2007, 20:22:30
Bueno, no nos dices que sistema operativo usas ni con que código imprimes cuando dices:
ya pude imprimir algunas cosas mediante los mismoso cuando dices:
cuanto mando a imprimir una linea y finalizo la impresion windows manda un new page
Si aclaras esto sería de gran ayuda.

En la otra parte del tema: SI se puede cambiar el tamaño de la hoja de la impresora. En Win9x el driver trae para espcificar el tamaño de hoja personalizado, en WinXP debes hacer así:
1) Abres la carpeta de Impresoras
2) Seleccionas la LX-300
3) En el menú Archivo eliges Propiedades del servidor
4) Marcas la casilla Crear un nuevo formato
5) Especificas el tamaño de tu hoja.
Listo!

emimarz
06-09-2007, 20:38:26
1) no importa el sistema operativo porque solo le estoy mandando caracteres de escape al puerto paralelo

y si es importante es XP

2) al mandarle la info directamente al puerto no necesariamente tiene que estar en la lista de impresoras instaladas
solo con que halla una conexion con el puerto paralelo ya esta

3) codigo si queres lo pongo pero creo no serviria de nada dado que lo que estoy preguntando no esta en mi codigo porque no lo se como se hace

por las dudas mi codigo es algo similar a la que puso luchifer en el post http://www.clubdelphi.com/foros/showthread.php?t=47000

no pongo mi verdadero codigo porque programo en visual basic pero estoy aki porque ustedes saben mas que la gente que programa en VB

gracias

paldave
06-09-2007, 20:55:17
Ah! Sucede que con Delphi tienes una gran ventaja: el objeto TPrinter, que te permite especificar exactamente las coordenadas donde quiere imprimir, por ejemplo:
TPrinter.Canvas.TextOut(100,150,'Hola');
Bueno, el error es que si pones writeln justamente le estás diciendo al programa que escriba una línea, es decir, que lo termine con el código #13(ENTER). Deberías utilizar write en su lugar.

¿POR QUE NO TE CAMBIAS A DELPHI? :)

emimarz
06-09-2007, 21:03:22
con el objeto printer se puede hacer eso
printer.currentx = 150 'setea X
printer.currenty = 250 'setea Y

printer.print "hola" ' imprime

printer.enddoc 'finaliza y manda manda a la impresora

el tema esta en que cuando finaliza la impresion manda un LF
o sea nueva paguina
y no puedo evitarlo

ademas los driver de windows no me permiten efectuar un tamaño de papel personalizado

ya que el objeto printer si usa las impresoras que estan en windows

si me decis que en delphi podes imprimir media hoja de fanfold y dejar el cabezal en la mitad de abajo. hago una rutina en delphi y ya

pero si ese es el caso dime como se hace