Configurar tipos de fuentes y estilos en impresoras matriciales Epson

En cualquier sistema empresarial actual aún es normal que se necesite imprimir comprobantes pre-impresos con impresoras de tipo matriz de punto, cuya calidad de impresión puede ser personalizada ajustando los tipos de fuentes y los estilos de impresión.

Como en muchos casos las impresoras utilizadas para este tipo de aplicaciones son de la marca Epson, principalmente LX-300/300+/300+II, en este artículo se documenta el procedimiento a seguir para configurar los estilos y fuentes de impresión desde la consola de comandos Linux, y desde un servidor de aplicaciones OAS (Oracle Application Server).


Desde la consola

Para realizar este tipo de configuraciones sin la intervención del usuario, las mismas pueden ser enviadas remotamente a las impresoras desde la consola de comandos del sistema operativo. Estos comandos son secuencias de caracteres de control que las impresoras reconocen y diferencian del contenido de impresión, para posteriormente interpretarlos y modificar su configuración a medida que los va recibiendo.

En entornos de tipo Unix-like, las secuencias de caracteres de control deben ser enviadas a las impresoras en formato hexadecimal. Básicamente se envía una cadena de caracteres a la entrada estándar del comando lp con el comando echo, el parámetro -d del comando lp permite definir cual será la impresora en la que se enviará la impresión. A continuación se verán algunos ejemplos:
  1. Para configurar el estilo de impresión de texto a Negrita tenemos que enviar el siguiente comando a una impresora matricial registrada en el sistema operativo:
    testsrv:~ # echo -en '\x1B\x45' | lp -d lpgabriel
    El primer código hexadecimal \x1B es un comando de escape que le indica a la impresora que se prepare para recibir una configuración específica, que en este caso es el comando hexadecimal siguiente \x45 que aplica el estilo de letra negrita.
    OBS: Con la tubería (pipe, |) el comando echo pasa a la impresora los comandos de configuración en formato hexadecimal. Los argumentos e y n (-en) del comando echo activan la interpretación de las barras invertidas y remueven el salto de nueva línea (del comando echo) respectivamente.
  2. También podemos indicarle a la impresora para que realice un salto de línea de la siguiente manera:
    testsrv:~ # echo -en '\x1B\x0A' | lp -d lpgabriel
  3. Si queremos cambiar el tipo letra que por defecto suele ser Draft o Draft Condensed a Roman o Saint Serif, primero debemos habilitar el uso de fuentes NLQ (Near Letter Quality) con el siguiente comando:
    testsrv:~ # echo -en '\x1B\x78\x01' | lp -d lpgabriel
    Luego indicarle el tipo de fuente NLQ a usar, para Roman se usa el siguiente comando:
    testsrv:~ # echo -en '\x1B\x6B\x00' | lp -d lpgabriel
    Y para Saint Serif el siguiente:
    testsrv:~ # echo -en '\x1B\x6B\x01' | lp -d lpgabriel
  4. Si queremos volver a configurar la impresora para Draft y Draft Condensed tenemos que desactivar el uso de fuentes NLQ de la siguiente forma:
    testsrv:~ # echo -en '\x1B\x78\x00' | lp -d lpgabriel
Estos son solo algunos ejemplos de comandos que permiten configurar las impresoras matriciales Epson, otros comandos y sus funciones se encuentran detallados en los documentos enlazados al final del artículo.


Mediante Oracle Report Builder y Oracle Application Server (OAS)

Como suelo trabajar con Report Builder de Oracle, se presentó la necesidad de imprimir comprobantes pre-impresos con una fuente distinta y mucho más oscura, para lo cual la fuente Roman con el estilo Negrita era la opción recomendada.

Para entrar en contexto, el escenario que me tocó es el siguiente:
  • Un servidor de reportes Oracle Report Server, que es un módulo del OAS (Oracle Application Server) instalado en un servidor Linux.
  • Las impresoras físicas de matriz de punto conectadas a computadoras de escritorio (Windows o Linux) y compartidas en red.
  • Las impresoras remotas montadas en el servidor OAS mediante Samba (smb), y configuradas como impresoras de texto plano.
Con este escenario los comandos o secuencias de control se tienen que enviar desde el servidor de reportes en Linux a las impresoras remotas.

La solución recomendada para estos casos es agregar las secuencias de caracteres de control a un archivo utilizado para configurar la salida de impresión en el servidor de reportes. Estos archivos llevan la extensión .prt y existen varios de ellos dependiendo de la configuración de salida que se necesite. Para que los reportes utilicen la definición de un archivo .prt, se tiene que asignar el nombre del archivo en el parámetro de sistema DESFORMAT durante el periodo de diseño del reporte en Oracle Report Builder, o bien incluirlo en tiempo de ejecución en la lista de parámetros del procedimiento que llama al reporte en un formulario diseñado con Oracle Forms 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 para que cuando se ejecute el reporte lo encuentre sin problemas y pueda aplicar el formato de impresión. En el caso del IAS 9i (Internet Application Server de Oracle) los archivos se encuentran en el directorio /ias/6iserver/report60/admin/printer/, y en el OAS 10g (Oracle Application Server) se encuentran en el directorio /oracle/app/oracle/product/midtier/reports/printers/.

A continuación se presenta el contenido de ejemplo de un archivo .prt:
printer "comprobantes"

height 24
width 80

before report esc hex(30) esc hex(35) esc hex(21)hex(03) esc hex(43)hex(18) esc hex(50) esc hex(45) esc hex(78)hex(01) esc hex(6B)hex(00)

after page

return ""
linefeed control(J)

Con las directivas height y width se indica al servicio de impresión del OAS (porque el OAS tiene sus propias definiciones de impresoras .ppd similares a cups) la cantidad de líneas y columnas respectivamente que tendrá cada página. Luego, seguido de la directiva before report van todos los comandos hexadecimales que permiten configurar la impresora matricial Epson antes de imprimir el contenido del reporte. A continuación se aclara cada conjunto de comandos del ejemplo:
  • esc hex(30): Le indica a la impresora que utilice un interlineado de 8 líneas por pulgada (1/8), ya que por defecto estas impresoras vienen configuradas en 1/6, o lo que sería lo mismo, 6 líneas por pulgada.
  • esc hex(35): Cancela el estilo cursiva si es que estuviese activado.
  • esc hex(21)hex(03): Aplica un estilo general de impresión donde el valor 03 corresponde a la suma de los códigos indicadores 1 y 2 que definen una configuración de 12 cpi e impresión proporcional de letras respectivamente. En realidad bien podría haber sido el valor en hexadecimal 02, ya que en vez de 12 cpi que tiene el indicador 1 se podría usar el indicador cero (0) de 10 cpi para sumarlo al indicador 2 de impresión proporcional de letras, ya que más adelante se configura nuevamente la impresora a 10 cpi (esc hex(50)).
  • esc hex(43)hex(18): Fija la longitud de la página en 24 líneas (18 hex == 24 dec).
  • esc hex(50): Configura a la impresora en 10 cpi (characters per inch).
  • esc hex(45): Esta secuencia de control configura la impresora para que el estilo de la fuente sea negrita.
  • esc hex(78)hex(01): Configura la impresora para que use letras de tipo NLQ (Near Letter Quality) en reemplazo de letras de tipo borrador como Draft y Draft Condensed.
  • esc hex(6B)hex(00): Esta secuencia sirve para seleccionar la letra Roman del tipo NLQ (Near Letter Quality).
Todos estos comandos llevan el carácter de escape esc, que antecede a todos los códigos hexadecimales. Para mayor información acerca de estos y otros caracteres de escape les recomiendo consultar los documentos enlazados al final de este artículo.

Para el caso en que el servidor OAS y el runtime de ejecución de los reportes estuviese instalado en un sistema operativo Windows, la disposición de las directivas del archivo .prt difieren un poco con las utilizadas en Linux. El contenido del archivo anterior de ejemplo quedaría como sigue:
printer "comprobantes"
height 24
width 80
before report
esc hex(30)
esc hex(35)
esc hex(21)hex(03)
esc hex(43)hex(18)
esc hex(50)
esc hex(45)
esc hex(78)hex(01)
esc hex(6B)hex(00)
after page
return ""
linefeed control(J)


Documentos útiles

Los comandos para configurar las impresoras matriciales Epson mencionados en este artículo y varios otros más se encuentran documentos en los siguientes enlaces, de los cuales ya se ha hablado en otra entrada que pueden encontrar entre los enlaces del resumen de guías.

Actualización 16/04/2015

He publicado un *nuevo artículo sobre impresiones matriciales desde Oracle Reports* que tiene mucha relación con lo tratado en este artículo. Pueden visitarlo desde el siguiente enlace:
URL: Impresión matricial con comandos ESC/P desde Oracle Reports

Comentarios

  1. Hola Gabriel, primero que todo gracias por el artículo. Estamos haciendo una migración de Forms/Reports 6i a Forms/Reports 11g. Nos encontramos con la situación que los tiquetes en impresoras POS que antes se imprimían bien, ahora son ilegibles. El problema es que no es en modo caracter, sino en modo bitmap. ¿Te has encontrado ante esta situación? De ser así, ¿Sabes cómo resolverlo?
    gracias

    ResponderEliminar
    Respuestas
    1. Hola, la verdad que a mi aún no se me presentó algo parecido, ya sea porque nunca he probado enviar impresiones en modo bitmap, (siempre he utilizado la opción MODE=Default), o bien porque sigo utilizan el Forms y Reports 10g.

      Las impresoras que usan son de la marca Epson? modelo TMU tal vez? es raro que no te funcione, son como las impresoras Epson LX-300, y que por cierto, ya has probado enviar la impresión a una LX-300?

      Saludos.

      Eliminar
  2. Amigo gabril tengo una Impresora Epson TM-U220A y necesisto imprimir un Ticket de esta Manera: pero quiero Fuente: Draft o sualquiera que yo le ordene, aqui te envio mi codigo gracias:
    Sub Imprimir()
    Dim X As Long
    If MsgBox("Desea imprimir Ticket?", 324, VbTitulo) = vbYes Then

    Documento = Me.TxtSigla.Text & Format(Me.TxtSerie.Text, "000") & "-" & Format(TxtNumero.Text, "00000000")

    With Me

    Printer.Font.Size = 8
    Printer.Font.Bold = True
    Printer.Font.Name = "A11"
    Printer.Print Tab(0); VbEmpresa
    Printer.Print Tab(20); Documento
    Printer.Print Tab(10); Format(Date, "dddd, d mmm, aaaa")
    Printer.Font.Bold = False
    Printer.Print Tab(5); ""
    Printer.Print Tab(5); ""
    Printer.Print Tab(0); "Cliente : " & Me.LabelNombres.Caption
    Printer.Print Tab(0); "RUC : " & Me.TxtRuc.Text
    Printer.Print Tab(5); ""
    Printer.Print Tab(0); "-------------------------------------------------------------------"
    Printer.Print Tab(0); "Cant."; Tab(8); "Detalle"; Tab(30); "Pre.U."; Tab(42); "Importe"
    Printer.Print Tab(0); "-------------------------------------------------------------------"
    Printer.Print Tab(5); ""
    For X = 1 To Me.FlexFac.Rows - 1
    Printer.Print Tab(0); .FlexFac.TextMatrix(X, 3); Tab(5); .FlexFac.TextMatrix(X, 2); Tab(35 - Len(Format(.FlexFac.TextMatrix(X, 4), "###,##0.00"))); Format(.FlexFac.TextMatrix(X, 4), "###,##0.00"); Tab(50 - Len(Format(.FlexFac.TextMatrix(X, 6), "###,##0.00"))); Format(.FlexFac.TextMatrix(X, 6), "###,##0.00")
    Next
    Printer.Print Tab(0); "-------------------------------------------------------------------"
    Printer.Print Tab(20); "SubTotal : "; Tab(50 - Len(Format(.LabelST.Caption, "###,##0.00"))); Format(.LabelST.Caption, "###,##0.00")
    Printer.Print Tab(20); "Descuento : "; Tab(50 - Len(Format(.LabelDescuento.Caption, "###,##0.00"))); Format(.LabelDescuento.Caption, "###,##0.00")
    Printer.Print Tab(20); "Flete : "; Tab(50 - Len(Format(.LabelFlete.Caption, "###,##0.00"))); Format(.LabelFlete.Caption, "###,##0.00")
    Printer.Print Tab(20); "Igv (18%) : "; Tab(50 - Len(Format(.LabelIGV.Caption, "###,##0.00"))); Format(.LabelIGV.Caption, "###,##0.00")
    Printer.Print Tab(20); "Total : "; Tab(50 - Len(Format(.LabelTotal.Caption, "###,##0.00"))); Format(.LabelTotal.Caption, "###,##0.00")
    Printer.Print Tab(5); ""
    Printer.Print Tab(0); "Gracias por su Compra!!!"
    Printer.Print Tab(5); ""
    Printer.Font.Size = 6
    Printer.Print Tab(5); "Usuario : " & FormMenu.LabelUser.Caption
    Printer.Print Tab(5); "Impreso : " & Date & " " & Time
    Printer.EndDoc
    End With

    End If




    'Printer.Print Tab(69); "SUBTOTAL :"; Tab(99 - Len(Format(mon1, "###,###,##0"))); Format(mon1, "###,###,##0")
    End Sub

    ResponderEliminar
    Respuestas
    1. Hola, no estoy muy al tanto de como será para hacerlo con VB, lo que supongo que hay que hacer es tratar de enviar los comandos esc/p requeridos antes de iniciar la impresión del ticket.

      En el artículo yo envío las secuencias de configuración desde la propia consola de Linux, lo mismo supongo que se podrá hacer desde el CMD de Windows y por supuesto enviarlos desde tu programa, quizás en formato hexadecimal o ascii, pero siempre cuidando que sea texto sin formato, sin retornos de carro, etc.

      Eliminar
    2. se que esta respues viene despues de 6 años pero quizas alguien lo busqye ... estos son los tipos de letras ...

      Print #1, Chr$(27); "!"; Chr$(0); 'Specifies font A (ESC !)
      Print #1, "Fecha: " & Format(Date, "dd-MMMM-YYYY") & " Hora: " & Format(Time, "HH:MM:SS")
      Print #1, Chr$(27); "d"; Chr$(3); 'Prints and 3 line feeding (ESC d)
      Print #1, Chr$(27); "a"; Chr$(0); 'Selects the left print position (ESC a)
      Print #1, Chr$(27); "F"; Chr$(1); 'Selects font B
      Print #1, "TM-U210B $20.00"; Chr$(10);
      Print #1, Chr$(27); "!"; Chr$(15); 'Comprimido
      Print #1, "TM-U210B $20.00"; Chr$(10);
      Print #1, Chr$(27) & "!"; Chr$(14); 'Ancho Double
      Print #1, "PS-170 $17.00"; Chr$(10);


      Eliminar
    3. Gracias por tu aporte Andres, seguro que a alguien le servirá. Yo también volví después de mucho a ver que pasaba por mi blog.

      Eliminar
  3. Amigo Grabiel te agradesco mucho pero te cuento que solucione mi problema y quiero compartirlo con ustedes, yo trabajo con Visual Basic 6.0, Sql server 2008 y Crystal Report 2008, tanto me di cuenta que Cree mi Ticket en Crystal Report y solo le di la fuente "FONTA11" instalada de la maquina Tickitera a todo el ticket y cuando imprimi salio justo como yo queria.. de antemano gracias!!! jose WILLIANS NAVARRO YOVERA - CATACAOS- PIURA PERU- E-MAIL: estrategiasmarwill@hotmail.com

    ResponderEliminar
    Respuestas
    1. Hola José, que suerte que lo hayas solucionado.. Saludos y éxitos!

      Eliminar
  4. Estimados, tengo un problema y no se como solicionarlo, tengo una epson fx-890 y cuando imprimo desde word todo sale bine pero cualquier documento tipo PDF que envio, la calidad de impresion es muy mala, es ilegible, no se si les ha pasado y como resolverlo, de antemano gracias por la ayuda

    ResponderEliminar
    Respuestas
    1. Hola, como es una impresora matriz de punto no creo que sea adecuado enviarle archivos pdf, porque dudo que interprete correctamente el lenguaje PostScript. Creo que lo más adecuado sería enviarle texto plano, como por ejemplo el contenido de un txt, o estás necesitando imprimir algún borde o detalle como una imagen? Saludos.

      Eliminar
  5. Hola amigo Gabril necesito ayuda por favor me podrias decir como covertir un campo Texto a Chekbox en Cristal Report 2008.... Gracias Saludos!!! Jose willians

    ResponderEliminar
    Respuestas
    1. Lo lamento, no manejo nada de Cristal Report? Saludos!

      Eliminar
  6. hola tengo una impresora tm-u325pd y cuando imprimo desde el oas no utiliza el driver de la validadora, porque podria ser? gracias

    ResponderEliminar
    Respuestas
    1. Hola Antonio, a que te refieres con el "driver de la validadora"? con la configuración de la impresora realizada desde el sistema operativo?

      Eliminar
  7. Asi es Gabriel, o sea, tengo instalado el driver de la impresora en mi maquina local, lo que necesito es utilizar la validadora de la impresora, pero el oas me arroja la impresión como "Receipt" y yo necesito como "validation". En forma local imprimiendo directamente desde el report me funciona pero al levantar en el sistema que tengo el oas arroja directamente la impresión al lpt1 sin tomar en cuenta el driver de la validadora.

    ResponderEliminar
    Respuestas
    1. Ya, tu servidor del OAS en que sistema operativo está instalador? supongo que tu impresora está compartida en Windows y la misma se encuentra montada en el servidor (Linux) como impresora remota Samba ..

      Eliminar
  8. Hola, y para que me imprima tildes(áéíóú) y eñes (Ññ) cual es el comando. Muchas gracias.

    ResponderEliminar
    Respuestas
    1. Hola Alex, sinceramente no sabría decirte, que impresora matricial tienes?

      Eliminar
  9. hola, tengo 2 entornos de trabajo windows y linux, servidor de reportes oracle. Mi problema es el siguiente: tengo una impresora epson lq-590 compartida por windwos al cual mando impresiones en papel continuo para cheques(4 por hoja), al mandar el report generado en windows sin problemas, el tema esta al mandar el mismo reporte desde linux a la impresora compartida de windows, las letras salen borrosas y luego del 3er cheque se junta con el 4to, el report se genera en pdf. Tendrias alguna soluciona?
    muchas gracias

    ResponderEliminar
    Respuestas
    1. Hola José Coronel, es probable que tu Oracle Report server en Linux esté enviando la impresión como archivo Postscript, y no como texto plano como debe ser. Para que el Reports te envié como texto plano debes configurar adecuadamente los parámetros de sistema de tu reporte, configuración que por cierto en estos momentos no me acuerdo.

      Saludos!

      Eliminar
  10. Buenas, estoy imprimiendo una boleta continua( diseñado un crystal reports), en una epson Lx300++ me imprime muy bien todo.
    Pero el mismo diseño de boleta continua en una epson FX 890 me imprime los caracteres muy pegados uno del otro. He intentado cambiar los cpp, el tipo de letra de la impresora pero nada.
    Si alguien sabe como tratar con la epson FX890, quizas haya movido alguna configuracion, mientras cuadradaba el tamaño de hoja o necesito configurar algo mas en la impresora.
    De antemano gracias

    ResponderEliminar
    Respuestas
    1. Hola Anónimo, como estás, será que tu impresora no está configurada con el tipo de letra condensada?

      Eliminar
    2. Hola, tengo el mismo problema con una epson fx 890, encontraste la solución?

      Eliminar
  11. Hola amigo, existe alguna solucion para poder imprimir bien un pdf en una matricial fx-890

    ResponderEliminar
    Respuestas
    1. Hola Henry, yo la verdad que no lo se, no le podes enviar solo texto?

      Eliminar
  12. hola amigos . tengo un problema con la epson LX300+ no hay forma de poder cambiar la fuente a condensada , he probado lo de los 3 seg el boton pause y apretar font con los diferentes parpadeos y a pagar pero sin resultados. alguien puede orientarme . gracias anticipadas.

    ResponderEliminar
    Respuestas
    1. Hola Anónimo, te consulto, la impresión que mandas no te está configurando de vuelta la impresora? Saludos!

      Eliminar
  13. Hola, estoy imprimiendo un reporte en formato matricial este es el código del prt :
    printer "ReciboMatri"
    height 30
    width 160
    code "bold on" esc "E"
    code "bold off" esc "F"
    code "underline on" esc "-1"
    code "underline off" esc "-0"
    code "bold underline on" esc "E" esc "-1"
    code "bold underline off" esc "F" esc "-0"
    code "900" esc "W1"
    code "901" esc "W0"
    before report esc "M" esc hex(43)hex(1B) esc " "
    between pages control(L)
    return control(M)
    linefeed control(J)
    Lo que pasa es que imprime todo bien pero cuando acaba la impresión de la pagina, salta un intervalo y se posiciona en la segunda hoja, tengo que darle al botón Tear Off/Bin de la impresora matricial Epson FX-890 para que regrese ese salto y poder imprimir correctamente.
    Agradeceré su ayuda.

    ResponderEliminar
    Respuestas
    1. Hola Julio, envías directamente tu impresión a una Impresora de tu Windows no?, si en Windows has configurado tu impresora matricial es probable que la cola de impresión de Windows le agregue un salto de hoja al finalizar la impresión, prueba ir en Impresoras, abre la ventana de propiedades de tu impresora y en la la pestaña Opciones avanzadas le marcás la opción Imprimir directamente en la impresora. Espero que te sea de ayuda, saludos...

      Eliminar
    2. No creo que sea eso porque ya probé... el problema es en la codificación del prt

      Eliminar
    3. Julio, un comentario acerca sobre tu archivo .prt, al comienzo has definido una altura de 30 y luego con la directiva hex(43)hex(1B) esc le indicas que es solo de 27 (hex(1B) = 27).
      Por otro lado, ¿has probado sin las directivas between pages control(L) y return control(M)?

      Prueba con algo similar al ejemplo que puse en el artículo, así bien cortito, y luego ve agregándole más cosas..

      Saludos..

      Eliminar
    4. Hola Gabriel, encontre la solucion el problema a sido de la impresora... y del servidor donde estaba trabajando.. hice la prueba poniendo mis fuentes y prt en otro servidor y cambiando de impresora matricial y Funciono, el codigo prt esta bien.. Muchas Gracias por la Ayuda.

      Eliminar
    5. Genial Julio, que suerte que haya funcionado..

      Eliminar
  14. Hola, Tengo un ambiente linux, agregué la impresora mediante cups (epson fx 890) y estoy trabajando con Weblogic 11, necesito imprimir en formularios pre impresos pero no logro que la impresora obedezca el archivo prt. Qué puedo hacer??
    Además, requiero usar la compresión para que los reportes quepan dentro de la hoja, cuál sería la instrucción que lo activa??

    Agradezco su ayuda!

    Saludos

    ResponderEliminar
    Respuestas
    1. Hola Hazel, ahora recién leo tu comentario, prueba configurar tu impresora matricial en cups como tipo Genérico - Raw, así lo uso yo con Weblogic 11g para las impresoras LX300 y para las impresoras térmicas Zebra, y funciona.. De esta forma uno se asegura que los comandos ESC/P u otros lleguen a la impresora correctamente..

      Saludos!!

      Eliminar
  15. hola amigo tengo una impresora LX-350 que por error toque la tecla de menú(SET)
    y ahora me imprime símbolos ,números,letras chinas, cuamdo enbio un documento cualquiera
    ayuda por favor gracias

    ResponderEliminar
    Respuestas
    1. Creo que la LX-350 la venimos usando de la misma manera que la LX-300 y nunca nos llegó a pasar algo así, de todos modos en el manual debería estar la configuración para restablecerla.

      Eliminar
  16. Hola. Tengo una pregunta que tipo de fuente y que tamano viene configurada la impresora de matriz de punto epson lx350 originalmente de fabrica, ya que por error se coloco otra fuente y otro tamaño y al imprimir el comprobante sale en desorden y el formato sale en otras dimensiones, en cambio en la configuracion predeterminada de la epson si imprimia correctamente. Gracias por la ayuda

    ResponderEliminar
    Respuestas
    1. Hola Anónimo, la verdad que lo desconozco, yo "creo" que por defecto debería ser Sans Serif de 10 cpi no condensado, al igual que la LX-300 de toda la vida, eso si, los mismos comandos ESC/P que envío a un LX-300 funcionan en la LX-350. Saludos!

      Eliminar
  17. Hola... Tengo un problema fijtate que tengo una impresora zebra a 300 dpis y requiero que me imprima letras chinas,,sabes como le puedo hacer..de antemano muchas gracias.

    ResponderEliminar
    Respuestas
    1. Hola Pancho, no tengo ni la más remota idea, lo lamento, las he usado pero no estoy muy familiarizado con su configuración, y tampoco tengo el manual a mano..

      Eliminar
  18. Hola, me podrían decir si es posible imprimir con una epson tm-t88IV con las fuentes fonta11 y fonta21 un ticket con algún programa de diseño o algo similar, solo consigo usar la fonta11 usando la opción sustituir fuentes, pero me es imposible usar las dos fuentes en el mismo ticket, estoy muuuy perdido...

    Saludos y muchas gracias de antemano.

    ResponderEliminar
    Respuestas
    1. Hola Anónimo, como vas imprimiendo tu ticket? creas un archivo de texto y por último le envías a la impresora o va imprimiendo por cada línea?

      De cualquier manera el procedimiento sería enviar los comandos esc/pos adecuados para cambiar de fuente antes de imprimir esa sección y luego volver a la fuente anterior mediante otro envío de comandos esc/pos. Podés consultar éste enlace y buscar la sección ESC ! n que permite lo siguiente: Selects the character font and styles (emphasize, double-height, double-width, and underline) together., debería funcionar para tu impresora.

      Eliminar
  19. Hola Gabriel.. Me llamo Heber.. Tengo un problema con un reporte de facturacion en la EPSON-LX 350... Cuando mando imprimir la factura no hay problema, puedo imprimir todas las facturas que quiero pero si eventualmente envio otro reporte que no sea una factura entonces la impresora se desconfigura, luego las facturas se imprimen con caracteres grandes y descuadrados.. Para que las facturas vuelvan a salir correctamente tengo que apagar la impresora, esperar unos segundos y volver a encenderla. Todos los reportes usan el mismo .prt (Reports Oracle 6i sobre windows 7)

    ResponderEliminar
    Respuestas
    1. Hola Heber, es importante que entiendas que al apagar y volver a prender tu impresora lo que sucede es que restablece su configuración por defecto.

      En este caso supongo que el archivo .prt del reporte de facturas no está configurando la impresora con el tipo de letra que corresponde cada vez que envías una factura para imprimir, quizás deberías verificar que configuración te envía tu otro reporte y ver que comando esc/pos lo reestablece para incluirlo en tu archivo .prt.

      Slds.

      Eliminar
  20. Hola Gabriel... Gracias por la respuesta... fue de muchisima ayuda..
    Tengo otra consulta, cual seria el comando ESC para establecer el modo de impresion a 20cpp a un reporte emitido en EPSON-LX 350.

    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola Herber, disculpa la demora, ando como loco con tanto trabajo y cosas que hacer, tengo un artículo borrador pendiente de publicar sobre el tema. Para usar 20cpi deberías enviar a la impresora los siguientes comandos esp/p desde el archivo .prt
      esc hex(21)hex(05)
      o bien también lo siguiente respetando el orden:
      esc hex(0F) esc hex(4D)

      Slds.

      Eliminar
  21. Excelente Gabriel... La impresora funciona exactamente como quiero.... Gracias..!!

    ResponderEliminar
  22. Buenos Dias, Don Gabriel tengo un inconveniente con una impresora EPSON FX-890, en mi area de trabajo imprimo recibos de caja, de la cual funciona perfectamente desde el PC de escritorio WIN XP, cuando comparto la impresora por RED a un portatil con WIN 7 64 las impresiones aparecen con letra grande y fuente DRAFT, me gustaria configurar la impresora para que desde el portatil imprima con fuente ROMAN y mas pequeña la letra... Teniendo en cuenta que no tengo el conocimiento adecuado en este tipo de impresoras...

    Le Anticipo Agradecimientos

    ResponderEliminar
    Respuestas
    1. Hola Gustavo, disculpá que ahora recién te responda, me comentaron que los drivers de las impresoras matriciales Epson para Windows permiten configurar el tipo de letra pero sinceramente nunca he utilizado utilizado esa opción. Deberías fijarte como tenés configurada la impresora en tu Windows 7.

      Saludos!!

      Eliminar
  23. HOLA AMIGO...SABES SOY NUEVO EN UTLIZAR ESTA IMPRESORA, PERO TENGO PROBLEMAS EN IMPRIMIR...COMO HAGO PARA QUE LA SALIDA DE FUENTE SALGA EN HSD O DRAFT (FUENTES), LA VERDAD QUE NO SE NADA...DE ESTO...PORQUE CUANDO IMPRIMO SALE PARECIDO A LA FUENTE TIMES ROMAN QUE NO SE LEE, YO KIERO CON PUNTOS NO MAS...SI ME PUEDEN AYUDAR PORFAVOR¡¡¡¡ATTE ANONYMOS

    ResponderEliminar
    Respuestas
    1. Hola Anonimo, la verdad no has explicado para que utilizas tu impresora, de que tipo de impresora se trata, con que configuraciones, envías las impresiones desde de? desde un sistema? Saludos!

      Eliminar
  24. Hola Buenas Tardes

    Tengo un problema con la impresora Epson LX-350. Al enviar la impresión las dos primeras líneas son 824,4 y debajo @bmi. Y me daña la impresión ya que sobrepasa el margen. Cómo puedo corregirlo?

    Gracias por el aporte

    ResponderEliminar
    Respuestas
    1. Hola. 824,4 y debajo bmi? desde que sistema estás enviando la impresión y que sistema operativo estás usando?

      Eliminar
  25. BUENOS DÍAS GABRIEL.-
    Tengo un impresora LX-350 y le envio la impresion de una factura hecha en ireport y algunos números me salen muy pegados unos de otros, como ejmplo el número 6 suele parcer un 8 y cosas asi...cual sería la solucion que me indicarías a tal situacion?.-
    desde ya muchas gracias por tu tiempo.-

    ResponderEliminar
    Respuestas
    1. La salida que genera tu ireport tiene que ser una salida totalmente en modo texto plano, modo caracter, si le agregas líneas y esas cosas probablemente el driver de la impresora pensará que es un archivo con imágenes y te lo tratará de imprimir aunque la impresora sea matriz de punto.

      Eliminar
    2. Se me presento el mismo error, se genera un archivo pdf para la imprimirlo y sale los números 3, 5, 6, 8, 9 no legible como el colega, pero cuando esta en word si toma el tipo de letra, que puede ser que esta pasando?. Saludos

      Eliminar
    3. Hola Yesid, generar un archivo en PDF y enviarlo a una impresora matricial no es en absoluto una buena idea, lo mejor es enviar a la impresora un texto plano sin formato.

      Eliminar
  26. Buenos dias amigos.

    Tengo Linux Ubuntu 12.04 e instale sin problemas una EPSON LX-300+II Pero al intentar imprimir algun documento con la fuente Draft 15 cpi la impresion sale distorcionada. Quisiera saber si alguien sabe como ajustar la configuracion en linux para imprimir con fuente Draft en la impresora EPSON. Gracias de antemano

    ResponderEliminar
    Respuestas
    1. Hola Manuel, lo más probable es que estás enviando la impresión a la impresora en un modo que no es totalmente texto, te recomiendo configurar tu impresora con el driver de tipo RAW, y le envías la impresión como texto plano puro, sin formato alguno.

      Eliminar
  27. Cómo hago para realizar una impresión condensada desde una Epson LX 350?

    ResponderEliminar
  28. hola tengo una impresora lx-350 y ne he podido cambiar el tipo de letra q debo hacer ????'

    ResponderEliminar
  29. Hola, cuando se envía a imprimir desde una Epson LX 350 un archivo PDF, imprime en horizontal, cuando desde cualquier otro archivo ya sea XLS, DOC, etc imprime normal. Gracias desde ya.

    ResponderEliminar
    Respuestas
    1. Hola Eduardo, la verdad no lo se, jamás lo he intentado, para imprimir archivos pdf o planillas electrónicas no sería mejor una impresora Láser o a chorro de tinta? Yo las impresoras matriciales solo las suelo usar para imprimir texto, que es para lo que mejor funcionan..

      Eliminar
  30. Buenas, tengo un problema cuando en el texto a imprimir esta el & justo cuando llega allí la impresora se detiene. espero me puedan ayudar. Gracias

    ResponderEliminar
    Respuestas
    1. Mmm, enviando la impresión desde Oracle Reports? o enviando un archivo de texto o el mismo texto a la impresora?

      Eliminar
  31. holas tengo una curiosidad tengo q imprimir un txt en una ticketera tmu 220 ,pero necesito que la fuente sea mas pequeña para que salga todo ok. necesito saber como hago eso, he leido varias cosa pero me confudi.. alguan idea..

    ResponderEliminar
    Respuestas
    1. Hola, básicamente deberías usar el comando esc/p esc hex(21)hex(xx), donde xx sería el número hexadecimal que corresponde a la configuración que vaya con tu necesidad. Si te fijas en la página 21 del siguiente manual escpos de la impresora tm-u950 podrás ver las distintas configuraciones que permite esa impresora, habría que ver si son compatibles con la tm-u220.

      Por ejemplo, si quisieras activar el tamaño de letra 7x9 y el doble de altura deberías pasarle el comando esc hex(21)hex(11), donde el valor 11 corresponde a la suma de los valores hexadecimales 01 (Character font 7x9 selected) y 10 (Double-height mode selected).

      Saludos.

      Eliminar
  32. segun puedo leer (Tiene seria dificultad para dedicarle tiempo a su blog.) y entender, tus conocimientos de impresion en matriciales y solo texto es espectacular...
    cai en esta pagina por hacer una busqueda en google: "comando impresion fuente cursiva" y la ayuda ha sido extarordinaria sin tener que hacerte una sola pregunta...
    este es un excelente blog!!!!
    para mas detalle:
    necesitaba lograr la impresion de letra cursiva de un viejo programa bajo DOS usado en Venezuela y aqui consegui lo que necesitaba!!!

    mucha suerte y felicidades!!!

    ResponderEliminar
    Respuestas
    1. Gracias Leonardo, me alegro que el artículo te haya sido útil, saludos!

      Eliminar
  33. Saludos, gracias por el aporte , en mi caso estoy imprimiendo un txt desde php con exec desde linux, lo hace bien pero debo bajar el numero de letra y el tipo de letra para que se definan bien los números ya que estoy imprimiendo facturas en una epson fx-890 , estoy probando con: echo -en '\x1B\x45' | lp -d lpgabriel , que parametros debo variar , de antemano gracias

    ResponderEliminar
    Respuestas
    1. Hola Jofre, mmm, si escribes el comando en tu distro Linux lo que debería cambiar es el nombre de la impresora (que en el ejemplo es lpgabriel). Recuerda que el comando anterior solo se encarga de configurar la impresora, el texto que le envíes después ya debería salir en negrita.

      Por cierto, como tienes configurado tu impresora fx-890 en tu Linux? debería estar configurado como para recibir datos raw para que reciba correctamente los comandos ESC/P de configuración que le envíes, en openSUSE utilizo el driver IBM Pro-Printer, no se cual será el driver adecuado en la distro que usas.

      Saludos.

      Eliminar
  34. Hola me podrias ayudar como podria imprimir un codigo de barras en una epson fx-890

    ResponderEliminar
    Respuestas
    1. Uff, ahora contesto un comentario de hace cuatro años atrás, pobre GUSHO, y lo peor es mi respuesta: Nunca llegué a utilizar la Epson FX-890..

      Eliminar
    2. Hola gabriel! tengo una consulta similar, tienes alguna experiencia con impresión de códigos de barra con una zebra? desde oracle reports?lo que pasa es que en la configuracion anterior de nuestro sistema(cliente/servidor forms&reports 6i) en el report(.rep)enviaba directo a la impresora zebra y se imprimía sin problemas el codigo de barras, ahora estamos en transicion a una arquitectura servidor de aplicaciones weblogic12c y forms&reports11g el mismo codigo del 6i utilizamos pero no se imprime, ni da mensaje de error ni nada, es como que no se envio nunca la orden de impresion a la zebra? tienes alguna sugerencia?
      muchas gracias!

      Eliminar
    3. Gabriel... lo logre pero en modo grafico sin consola aunque la velocidad de imprension puff bastante lenta...sabras algo??

      Eliminar
    4. Hola Gusho! te consulto como lograste imprimir el codigo de barras?tendrias algun ejemplo a compartir?estoy con intenciones de imprimir codigos de barra y quiero utilizar la epson tmu 220 en caso de que se pueda.

      Eliminar
    5. Hola Gusho y Fernando,

      Quería consultarles para que desean imprimir códigos de barras en impresoras matriciales (dot-matrix), y que tipos de códigos de barras, ¿EAN, UPC?

      En cuanto a las impresoras Zebra, si, debería funcionar al ejecutar el reporte con la salida dirigida a una impresora configurada en el servidor. Si tu servidor de aplicaciones es un Linux, la impresora debería utilizar el driver Raw y tu reporte de Reports configurado en modo Character como se detalla el siguiente artículo: https://www.tormentadebits.com/2015/04/impresion-matricial-con-oracle-reports.html

      Eliminar
  35. Hola me podrian ayudar porfavor tengo una impresota lx 350 se le cambio el cabezal y la placa madre y ahora me imprime como si hubiese mandado a imprimir en negrita como puedo solucionar ese incoveniente

    ResponderEliminar
    Respuestas
    1. Cristian, un problema de impresión que se da luego de la reparación de hardware es complicado de diagnosticar, ni idea que hicieron con tu equipo.

      Eliminar
    2. Hola Gusho! te consulto como lograste imprimir el codigo de barras?tendrias algun ejemplo a compartir?estoy con intenciones de imprimir codigos de barra y quiero utilizar la epson tmu 220 en caso de que se pueda.

      Eliminar
  36. hola gentes...necesito una ayuda si es factible...tengo un cliente que imprime su facturas en una Impresora LX300II pero cambio por una LX350 y esta LX350 no tiene el tipo de letra que tenia la otra impresora..que es la Draft condensado...como puedo hacer para agregarle a esta impresora el tipo de letra Draft Condensado a la LX350...al una ayuda por favor...

    ResponderEliminar
    Respuestas
    1. Hola Paul, hasta donde sé la Epson LX350 sigue manteniendo el tipo de letra Draft condensed,

      Eliminar
  37. Hola, para imprimir guías uso la fx 890ii pero imprime muy oscuro, el comando que pussite es para poner la letra en negrita, como seria para quitar eso?
    gracias por la respuesta.

    ResponderEliminar
    Respuestas
    1. Depende de como lo asignaste y de donde estás enviado la impresión. Podemos cancelar el modo resaltado (negrita) utilizando el valor hexadecimal 46, para activar la negrita usamos el valor hexadecimal 45. En Linux los comandos serían como sigue:

      echo -en '\x1B\x45' | lp -d tuImpresora
      echo "Hola en negrita" | lp -d tuImpresora
      echo -en '\x1B\x46' | lp -d tuImpresora
      echo "Hola sin negrita" | lp -d tuImpresora

      Eliminar
  38. hola necesito su ayuda, tengo q imprimir un txt en impresora TM-U950P ,pero necesito que la fuente sea mas pequeña.

    ResponderEliminar
    Respuestas
    1. Con los siguientes comandos ESC/P debería funcionar:

      esc hex(21)hex(05): Con esta directiva le indicamos que queremos imprimir nuestro comprobante en 20 CPI (caracteres por pulgada), o lo que sería lo mismo 12 CPI en modo condensado.

      Eliminar

Publicar un comentario