Posteado por: Gabriel en: Marzo 17, 2008
Como suelo corregir o modificar reportes del sistema de la empresa con el Report Builder de Oracle, surgió la necesidad de imprimir cheques con una fuente distinta (Roman) y mucho más oscura (Negrita), como las impresoras de los cheques son del tipo Matriz de Punto de la marca Epson LX-300/300+ la solución es enviar secuencias de caracteres de control para configurar las mismas en forma automática sin que el usuario de la misma necesite configurar la impresora (Evitando muchos problemas…).
Este caso es especial porque el servidor de reportes Oracle Report Server, que es un módulo del IAS (Internet Application Server de Oracle), se encuentra montado en un servidor GNU Linux, las impresoras físicas se encuentran conectadas a PC’s con Windows donde las mismas están compartidas, desde GNU Linux estas impresoras remotas están montadas o agregadas por medio del protocolo samba (smb) y están configuradas como impresoras de texto plano nada más, que es lo correcto para estos casos. Con esta topología los comandos o secuencias de control se tienen que enviar desde el servidor de reportes en GNU Linux a las impresora.
La solución que encontré para este caso fue agregar las secuencias de caracteres de control a un archivo que ya existía y que es utilizado para configurar la salida de impresión que envía el servidor de reportes a la impresora, estos archivos son de la extensión .prt habiendo varios de ellos dependiendo de la configuración de salida que necesitemos. En nuestro caso ya existía un archivo de definición exclusivo para cheques llamado cheque.prt, sin embargo, para que un reporte utilice la definición del archivo cheque.prt se tiene que ingresar el nombre del archivo en el parámetro de sistema DESFORMAT durante el periodo de diseño del reporte con el Oracle Report Builder:

Ahora, ¿donde se encuentran los archivos de definición .prt? Pues eso depende de la instalación del servidor de reportes, lo que si es seguro es que los archivos tienen que encontrarse dentro de los directorios especificados en el PATH del servidor de reportes para que cuando se ejecute un reporte que utilice uno de esos archivos lo encuentre sin problema y pueda así aplicar el formato de salida a la impresión. En mi caso los archivos se encuentran en el directorio /ias/6iserver/report60/admin/printer/ del servidor de reportes.
El contenido completo del archivo cheque.prt se muestra a continuación:
printer "cheque"
height 18
width 80
before report esc hex(78)hex(01) esc hex(6B)hex(00) esc hex(45)
after page
return ""
linefeed control(J)
Para que la impresión del cheque sea con letra Roman y estilo Negrita la línea de texto que se tuvo que agregar es:
before report esc hex(78)hex(01) esc hex(6B)hex(00) esc hex(45)
donde se le indica que antes de imprimir el reporte (before report) se le envía el carácter de escape “esc” y a continuación el código en hexadecimal hex(78)hex(01) que configura a la impresora para que no imprima más en letras de tipo borrador como son Draft y Draft Condensed, luego se le envía otra secuencia que es esc hex(6B)hex(00) cuyos valores en hexadecimal son los correspondientes para seleccionar la letra Roman del tipo NLQ (Near Letter Quality), por último se le envía la secuencia de control esc hex(45) que configura la impresora para que el estilo de la fuente sea negrita. Para mayor información acerca de los caracteres de escape de las impresoras matriciales de punto Epson, favor consultar en su manual.
Así la impresora se configura automáticamente cada vez que se envía una impresión, ya que si la misma se apaga esta pierde todas las configuraciones previas.
A parte de todo esto también estuve probando unas definiciones para el archivo cheque.prt que solo me funcionaron para Windows y no para linux, pero no me puse a investigar el motivo por el cual no me funcionaba. El contenido del archivo es como sigue:
printer "cheque"
height 18
width 80
before report
esc hex(45)
esc hex(78)hex(01)
esc hex(6B)hex(00)
after page
return ""
linefeed control(J)
y como estamos en el tema también probé enviar secuencias de caracteres a una impresora desde la línea de comandos (shell) de linux para configurar la misma, tuviendo que realizarlo de la siguiente forma:
Comandos ShellScript:
//Configura la impresora para que el estilo del texto sea Negrita:
[gk@server gk]$ echo -en '\x1B\x45' | lp -d lpgabriel
//Envía a la impresora un comando de salto de línea:
[gk@server gk]$ echo -en '\x1B\x0A' | lp -d lpgabriel
//Configura la impresora para que no se puedan usar fuentes NLQ, solo Draft y Draft Condensed:
[gk@server gk]$ echo -en '\x1B\x78\x00' | lp -d lpgabriel
//Configura la impresora para que se pueda usar fuentes NLQ:
[gk@server gk]$ echo -en '\x1B\x78\x01' | lp -d lpgabriel
//Configura la impresora para que seleccione la fuente NLQ Roman:
[gk@server gk]$ echo -en '\x1B\x6B\x00' | lp -d lpgabriel
//Configura la impresora para que seleccione la fuente NLQ Saint Serif:
[gk@server gk]$ echo -en '\x1B\x6B\x01' | lp -d lpgabriel
Básicamente se envía una cadena de caracteres a la entrada standart del comando lp, el parámetro “-en” del comando echo permite que la cadena de entrada salga oculta y sin un carácter de retorno de linea, esto es fundamental para que la impresora interprete el comando, el parámetro -d del comando lp permite definir cual será la impresora en la que se enviará la impresión.
Gabriel como puedo imprimir desde la linea de comandos de linux un archivo de texto con formato, el problema que tengo es que uso una impresora tipo tiketera star tsp100, logro imprimir desde el shell pero no con el formato adecuado, espero puedas darme una ayuda. Gracias
necesito conseguir manual de programación de impresoras TM de Epson. Concretamente necesito programar apertura cajón monedero de una TM U220A. Tiene un conector rj11. Si alguien tiene los códigos scape y me los puede pasar, o el manual, estaría muy agradecido….
Grabriel que tal.
Gracias por tu articulo.
En mi caso, tengo que imprimir un reporte en caracter, que usa 2 formatos de letra. En el encabezado un tamaño grande, el detalle mas pequeña. Cuando el reporte solo es de una pagina todo sale perfecto. Pero cuando el reporte lleva mas de 2 hojas, el ultimo tamaño de letra se va para todas las paginas siguiente y esto ocasiona que se corran la impresion y se malgastan las hojas, el reporte que hablo es de facturacion y ya las hojas estan preimpresas. Asi que solamente mando son las datos a llenar la hoja preimpresa.
Gracias de ante mano por tu ayuda.
Hola Gabriel
Estoy buscando en internet porque necesito imprimir cheques en papel continuo en impresora matricial Epson desde oracle report y necesito que imprima sin ningun margen y hasta ahora no he podido, probe configurar la impresora pero igual me deja el margen, Hay alguna forma de que no deje margen. Agradeceria mucho si me puedes ayudar hace muy poco que estoy con esta herramienta.
Gracias, Marcela.
Hola Gabriel
Estoy intentando sacar impreso un reporte a media pagina, intente cambiando el alto en el Main section pero nada que me funciona me sigue sacando el reporte en tamaño carta, tambien intente creando un archivo PRT lo agrege en el desformat y en la carpeta PRINTER en mi servidor, de esta forma tampoco me funciono, mi impresora es una EPSON LX-300, espero me puedas ayudar.
Muchas gracias por el comentario, me sirvio de mucho.
Gracias por este aporte, lo probe en ubuntu en una Epson TM-U220
Reemplace el comando:
echo -en ‘\x1B\x0A’ | lp -d lpgabriel
por:
echo -en ‘\x1B\x0A’ | lpr
y funciona de maravilla.
Aprovecho para compartir 2 comandos mas:
1. echo -en ‘\x1D\x56\x1′ | lpr sirve para hacer corte parcial
2. echo -en ‘\x1B\x70\x0\x64\x64′ | lpr sirve para abrir el cajon de monedas
necesito ayuda por favor, no puedo hacer andar la impresora fiscal epson TM-U220A en ubuntu 9.04
saludos
Tengo una impresora TMU 200B y toco configurarla como generic / text only pero al momento de imprimir me sale un error que no fuentes no existen gracias si me puedes colaborar att juan
Gabriel
soy de Argentina. Estoy imprimiendo cheques(oracle financials-report builder) en papel continuo(4 x hoja) en epson matricial.
Sabemos que el karma eterno es resolver el leve ‘corrimiento’ que se genera entre la impresion de un chq y otro.
No tenes una guia completa de los pasos a seguir para evitar este bendito problema ?
mil gracias
Hola Gabriel , mucho gusto. Primera vez que entro en tu bitacora.
me parece genial.
Estoy tratando de imprimir un formato de cheques que tiene 7.3″ de alto desde report6 en Linux Red Hat. Lei todos tus comentarios acerca de ese tema y creo que los he aplicado. Lo unico es que no estoy seguro si la impresora fuè definida solo caracter. Sabrias como puedo chequear esto o como prodría crear una impresora sòlo caracter en Linux.
Muchas Gracias
ola gabriel me puedes ayuadar necesito imprimir unos datos sobre un formato en una impresora de punto ya configure el .prt pero aun sale desorganizado la imprimiendo
Estoy tratando de configurar el espacio entre líneas en una epson lx300+. Según el manual, este espacio puedo ser reducido a aumentado. Sin embargo, no especifica de manera muy clara cómo hacerlo. Necesito reducir este espacio para poder imprimir desde un sistema desarrollado en informix para unix (SCO).
Un favor, tengo un recporte en modo caracter que se imprime en papel continuo y este tiene asociado un prt, el problema es que cuando termina de imprimir deja una hoja en blanco, trate de eliminar el “after page” para que no haga el salto de pagina pero cuando el reporte es de 2 o mas hojas se descuadra, por eso tengo que mantener el “after page” para que no se descuadren las hojas de pagina en pagina. la pregunta del millon es: Como hago para que haga el salto de pagina pero no el salto al final del reporte?
mi prt es :
printer “caracter”
height 66
width 255
before report
esc “@”
esc “M”
after page
return “”
linefeed control(J)
Hola Gabriel, es la primera vez que ingreso en tu bitácora y es de mucha utilidad para mi, tengo una problemita y necesito tu ayuda. Estoy imprimiendo varias facturas en Report Builder 6 y el inconveniente que tengo es que en la primera hoja imprime bien, pero a partir de la segunda imprime como 5 centímetros mas abajo y así va aumentando en cada hoja.
Como hago para imprima correctamente en cada hoja? Desde ya muchas gracias.
Sres. buenas tengo una conosulta, sobre impresion desde Ubuntu, con oracle reports, quiero imprimir en TMU-220, epson LX300+ y epson LQ2090, pero me da probemas, como debo instalar las impresoras, algo en especial en los prts, o que tengo que hacer….
Virgilio Argeñal
Guatemala, Guatemala…..
Hola Gabriel, mira tengo una impresora LX-300 y suelo imprimir un archivo especifico que me envian por correo y la letra me sale muy pegada una encima de otra, lo cual ni se entiende el contenido pero solo es que con ese archivo adjunto, porque las demas impresiones me salen correctamente.
Me dice el tecnico que debo cambiar la configuaracion de la letra de la impresora, pero la verdad es que es solo con ese archivo que me envian que no me deja imprimirlo legible porque lo que lo demas me imprime correctamente.
Hola mi problema es asi:
Tengo la Epson TM-U220PD pero al momentos de imprimis los recibos la letras sale muy pequena tanto que los numeros no son legibles…
Como le cambio del tamano de impresion de la letra para los recibos.???
salude
necesito ayuda por favor, no puedo hacer andar la impresora fiscal epson TM-U220A en ubuntu 9.04
saludos a todos y gracias
hola gabriel tengo un problema imprimo mediante oracle red hat 5.0, lo que me pasa es k cuando imprimo el salto de hoja ,la primera imprime bien y la segunda hoja imprime mal, he cambiado de impresora y la otra no me causa problmas de hecho k no es el sistema, kisiera saber k parte de mi impresora epson fx 890 esta en problemas para poder solucionarlo. gracias de ante mano tu r4espuesta ![]()
la primera imprimer a la medida exacta y la segunda hoja va suviendo y la tercera va subiendo mas he tenido k cambiar de impresora nos vemos ayudame porfa =)
Buenas, Gabriel que buena informacion hay aqui.
Necesito tu colaboración: Estoy haciendo un reporte (Report Builder 6.0.8.27.0) este se genera a través del report background cuando se invoca desde una forma (Forms [32 Bit] Version 6.0.8.27.0 ), se trabaja en cliente servidor, cuando se envia el reporte con 1 sola copia todo va bien, pero cuando se envia mas de una copia y el contenido del documento llega a mitad de pagina, la siguiente copia me continua imprimiendo en la misma pagina donde termino la primer copia. Como hago para darle un salto de pagina y si termina a media pagina complementar estos con un caracter especial.
Saludos y gracias.
Mayo 26, 2008 a 11:02 am
Gracias Viejo… tu articulo ha sido de mucha ayuda..!