HOWTO originalmente publicado en el wiki del LugFI, circa 2006, luego publicado en el wiki del GlugCEN. Como la primera copia parece perdida y la segunda no anda muy bien, prefiero tenerlo en casita :).

Ingredientes:

  • foomatic-db-engine
  • foomatic-db-gimp-print / foomatic-db-gutenprint
  • foomatic-gui (opcional)
  • Probablemente gs-gpl
  • Usuario miembro del grupo lp, o cambio de permisos en /dev/lp0

Siempre odié CUPS, debo confesarlo. Ya me molestaba tener que usar un daemon para imprimir en mi estación de trabajo desconectada del mundo y que uso yo solo. Pero CUPS le agrega megas y megas de uso de disco, mucho tiempo en booteo (nunca entendí qué catzo hacía) y para colmo la jodida interfaz web que a mí me resulta incómoda y lentísima.

Antes había usado LPQ, que es un front-end similar a LPR, pero sin spooler, pero ya no está en Debian... Mirando la página de http://linuxprinting.org/, donde hay muy buena información sobre drivers y spoolers de impresión, encontré un howto de cómo no usar ningún spooler.

Antes que nada, resumo cómo funciona esto, que es un bardo.

  • Uno tiene un frontend, que puede ser lp, lpr o alguna GUI.
  • El frontend pasa los datos al spooler, que si no son postscript suele convertirlos al vuelo.
  • El spooler, con su definición de impresora llama a un filtro.
  • Como filtro se mete foomatic, que proveé cantidad de drivers, y puede usar drivers de terceros, como gimp-print.
  • El filtro convierte el postscript original en un stream listo para la impresora destino (si es una impresora postscript, foomatic no hace muchos cambios)
  • Con estos datos el spooler se comunica con la impresora y se los manda.

Al imprimir sin spooler, uno directamente invoca a foomatic, pasándole los datos originales y la salida se manda derecho a /dev/lp0, sin mayores complicaciones. La única desventaja es que hasta que no termina de imprimir, no nos devuelve el control, pero ahora vemos como solucionar eso.

La gran complicación de esto es configurar foomatic, más leyendo el HOW-TO de la página antes mencionada; pero por suerte existen foomatic-configure y foomatic-gui (OJO, ambos requieren permisos de root, podemos usar su o sudo). Ambos se encargan de todo, inclusive si uno usa cups, lpr*, lpd, etc!!

No he investigado cómo configura a los spoolers que mencioné, pero si uno le dice que quiere imprimir derechito al puerto, no se queja, son 5 clicks con foomatic-gui (inclusive nos recomienda qué driver usar, según los datos de Linux Printing!!) y ya está listo!.

Con foomatic-configure, usando un driver de gutenprint, hice así:

sudo foomatic-configure -s direct -n bjc250gimp -c file:/dev/lp0 -d gutenprint-ijs.5.0 -p Canon-BJC-250

Tardé un buen rato en darme cuenta de cómo invocar a foomatic cuando quería imprimir algo :). La respuesta es foomatic-rip, lo mismo que usan los spoolers cuando necesitan invocarlo. Usa la misma sintáxis que lpr, así que podemos hacer un enlace simbólico, para que sea más cómodo de usar:

ln -s /usr/bin/lpr foomatic-rip

Y para probar, le mandamos que nos imprima una página que da todas las opciones posibles del driver de la impresora:

$ foomatic-rip -P <nombre de la impresora> -o docs /proc/cpuinfo

o

$ lpr -P <nombre de la impresora> -o docs /proc/cpuinfo

Si hay problemas (típicamente no hace nada), usar la opción -v.