Inicio > codear, linux, programación > Escupiendo hojas en Linux

Escupiendo hojas en Linux

Domingo, 17 de septiembre de 2006 Dejar un comentario Ir a comentarios

Holaaa!

En estos últimos días de silencio bloguero me enganché en unos proyectos de desarrollo en Python (primero y por ahora) y el segundo (todavía no lo ví) en PHP.

Lo primero que tuve que resolver fue hacer que una impresora Epson C67 imprimiese lo más rápido posible, y en modo gráfico (como para ponerlo en modo draft, mínimo). La gente había investigado dos opciones, una era abriendo el puerto /dev/usblp0 directamente, tratando de enviar la inicialización… miraron (y miré yo también) bastante código de CUPS, de sus filtros (en C)… tratando de entender el lenguaje EJL, cambiarlo a IEEE 1284.4 y después a ESCP/2… fue imposible. Hay muy poca documentación y lo máximo que se logró fue que tomara la hoja, pero nada más. Si alguien quiere documentación, acá tiene algo más.

Como alternativa se podía imprimir por CUPS. Pero CUPS es un soft grandote, que como se puede ver en su arquitectura, es cliente/servidor, maneja un spooler… filtros, planificación, ACLs, es decir, consume mucho procesamiento antes de que efectivamente imprimiera… (tomaba 10 segundos hasta que tomara la hoja, lo cual para los objetivos del proyecto era inaceptable).

Esto está en una parte de la extensa documentación:

Hasta que leí con más detenimiento la página de Linux Printing. Allí dice que los drivers Foomatic (con los que se imprime en la C67) pueden utilizar como output CUPS, LPR, PPR, PDQ, Y SIN SPOOLER!! (Salvo CUPS, al resto de los spoolers no los conozco). O sea, impresión directa con los drivers de foomatic.

Era casi ideal la situación, salvo que había que ir a la práctica. Siguiendo la documentación salió todo perfecto. En una máquina actual (Celeron 2 Ghz), desde que se ordena la impresión hasta que toma la hoja y comienza a imprimir tardó 1.8 segundos! (en modo draft, enviándole un pdf como input). Cabe destacar que la generación del pdf sencillo tomaba menos de un segundo.

Más o menos fue tanto como copiar el archivo .ppd correspondiente a /etc/foomatic/direct/ y después ejecutar:

#foomatic-rip --ppd /etc/foomatic/direct/impresora.ppd \
/home/marcelo/test

(todo en la misma línea)

Desde python fue tanto como ejecutar esto mismo con una llamada a os.system().

Así solucioné el primero de los dos problemas que tuve esta semana. El segundo lo dejo para la próxima, porque todavía no lo pude resolver del todo, pero tengo buenas perspectivas….

Me voy a disfrutar un poco del sol y de la familia.

Salutes!
Marcelo

PD: Me reí un rato largo con todas las fotos (y la imaginación de los que juegan con Photoshop o Gimp) del “Tio del Cigarro” Mírenlo! 😀

Categories: codear, linux, programación Tags:
  1. Guillermo
    Viernes, 8 de junio de 2007 a las 19:42 | #1

    Hola marcelo buscando la manera de hacer andar mi epson stylus c67 en ubuntu llegué hasta tu blog. Simplemente quisiera saber si me podrías decir como hacerlo soy novato y no encontré información en ningún lado. Muchas gracias.

  1. Sin trackbacks aún.