Página siguiente Página anterior Índice general

5. Filtros mágicos

Un filtro puede ser tan sencillo como los que hemos visto, o complicarse substancialmente, llegando a ser capaz de reconocer el tipo de fichero que queremos imprimir y realizar las operaciones necesarias para que obtengamos una salida correcta. Un «filtro mágico» analiza la entrada que recibe y, de acuerdo con los datos que le llegan, manda el trabajo a otro filtro secundario. Así, cuando le llega un fichero en formato PS, lo envía a ghostcript, cuando es JPEG, lo manda a otro filtro adecuado para la impresión correcta, etc. Los filtros mágicos más conocidos son magicfilter, apsfilter y los filtros de impresión de RedHat.

5.1 Magicfilter

Magicfilter es un programa escrito por H. Peter Anvin Peter.Anvin@linux.org que puede encontrarse en cualquier espejo de sunsite, en el directorio

/mirror/linux/sunsite/system/printing/magicfilter-1.2.tar.gz

y también existe como paquete .deb y .rpm. Es el filtro mágico recomendado en la distribución Debian. Para configurar una impresora en este sistema, primero han de instalarse los paquetes magicfilter y recode. El programa magicfilterconfig se crea al instalar el paquete magicfilter y permite una cómoda configuración de la impresora, escribiendo el fichero /etc/printcap a partir de las respuestas a una serie de preguntas que nos hace interactivamente. Nos pregunta por el puerto del dispositivo (/dev/lp1 o /dev/lp0), así como los nombres que daremos a nuestra impresora: uno largo y descriptivo y otro más corto que se usará como nombre para el directorio spool y luego muestra una serie de filtros disponibles para elegir. Lo mejor es mirar, antes de ejecutar magicfilterconfig, en el directorio /etc/magicfilter para ver cuál es el filtro que mejor viene a nuestra impresora. Los filtros son archivos de texto en cuyo cabecera se indica la impresora que lo puede utilizar. magicfilterconfig genera el fichero /etc/printcap con toda la información que le hemos dado. Para el caso de mi Epson Stylus Color 600, el fichero /etc/printcap generado por magicfilterconfig es (En Debian 2.1 kernel 2.0.36):

#
# Copyright (c) 1983 Regents of the University of California.
# All rights reserved.
#
# Redistribution and use in source and binary forms are permitted
# provided that this notice is preserved and that due credit is given
# to the University of California at Berkeley. The name of the University
# may not be used to endorse or promote products derived from this
# software without specific prior written permission. This software
# is provided ``as is'' without express or implied warranty.
#
#       @(#)etc.printcap        5.2 (Berkeley) 5/5/88
#
# This file was generated by /usr/sbin/magicfilterconfig.
#
lp|eps|ESC600:\
        :lp=/dev/lp1:sd=/var/spool/lpd/eps:\
        :sh:pw#80:pl#72:px#1440:mx#0:\
        :if=/etc/magicfilter/stylus_color_360dpi-filter:\
        :af=/var/log/lp-acct:lf=/var/log/lp-errs:

Una vez instalado, magicfilter permite que el sistema reconozca e imprima gráficos (GIF, JPEG, TIFF, BMP...), ficheros PS, PDF, DVI, páginas de manual, ficheros ASCII con acentos y ñ, e incluso cualquier tipo de fichero comprimido con gzip.

5.2 Apsfilter

apsfilter es otro programa que permite configurar la impresora y escribir un fichero /etc/printcap con los filtros adecuados para muchos formatos de fichero (ASCII, DVI, PS, PDF, GIF, TIFF, BMP, BITMAP...) y diversos tipos de compresión (compress, gzip, freeze). apsfilter ha sido desarrollado por Andreas Klemm andreas@knobel.gun.de y es el paquete incluido en el YaST de SuSE para la configuración de la impresora, así como el que recomienda Pat Volkerding en su mensaje de bienvenida a Slackware. Puede obtenerse de

http://www.freebsd.org/~andreas/

El programa apsfilter ofrece las siguientes colas de impresión para una computadora local:

El fichero /etc/printcap correspondiente a mi Epson Stylus Color 600, obtenido con apsfilter, es el siguiente (En SuSE 6.2 kernel 2.2.10):

### BEGIN apsfilter: ### stcany.upp a4 color 360 ###
#   Warning: Configured for apsfilter, do not edit the labels!
#            apsfilter setup Thu Oct 14 01:30:42 CEST 1999
#
ascii|lp1|stcany.upp-a4-ascii-mono-360|stcany.upp a4 ascii mono 360:\
        :lp=/dev/lp0:\
        :sd=/var/spool/lpd/stcany.upp-a4-ascii-mono-360:\
        :lf=/var/spool/lpd/stcany.upp-a4-ascii-mono-360/log:\
        :af=/var/spool/lpd/stcany.upp-a4-ascii-mono-360/acct:\
        :if=/var/lib/apsfilter/bin/stcany.upp-a4-ascii-mono-360:\
        :la@:mx#0:\
        :tr=:cl:sh:
#
lp|lp2|stcany.upp-a4-auto-color-360|stcany.upp a4 auto color 360:\
        :lp=/dev/lp0:\
        :sd=/var/spool/lpd/stcany.upp-a4-auto-color-360:\
        :lf=/var/spool/lpd/stcany.upp-a4-auto-color-360/log:\
        :af=/var/spool/lpd/stcany.upp-a4-auto-color-360/acct:\
        :if=/var/lib/apsfilter/bin/stcany.upp-a4-auto-color-360:\
        :la@:mx#0:\
        :tr=:cl:sh:
#
lp-mono|lp3|stcany.upp-a4-auto-mono-360|stcany.upp a4 auto mono 360:\
        :lp=/dev/lp0:\
        :sd=/var/spool/lpd/stcany.upp-a4-auto-mono-360:\
        :lf=/var/spool/lpd/stcany.upp-a4-auto-mono-360/log:\
        :af=/var/spool/lpd/stcany.upp-a4-auto-mono-360/acct:\
        :if=/var/lib/apsfilter/bin/stcany.upp-a4-auto-mono-360:\
        :la@:mx#0:\
        :tr=:cl:sh:
#
raw|lp4|stcany.upp-a4-raw|stcany.upp a4 raw:\
        :lp=/dev/lp0:\
        :sd=/var/spool/lpd/stcany.upp-a4-raw:\
        :lf=/var/spool/lpd/stcany.upp-a4-raw/log:\
        :af=/var/spool/lpd/stcany.upp-a4-raw/acct:\
        :if=/var/lib/apsfilter/bin/stcany.upp-a4-raw:\
        :la@:mx#0:\
        :tr=:cl:sh:
#
### END   apsfilter: ### stcany.upp a4 color 360 ###

Después de instalar el paquete apsfilter, la configuración de la impresora se lleva a cabo fácilmente ejecutando el script SETUP que encontraremos en el directorio /var/lib/apsfilter o /usr/lib/apsfilter. SETUP nos irá mostrando menús de opciones que seleccionaremos convenientemente, y al final nos escribirá el fichero /etc/printcap como arriba aparece. Existe un fichero de configuración de apsfilter llamado /etc/apsfilterrc que permite un mayor control del trabajo de los scripts de apsfilter en el shell. Por ejemplo, apsfilter imprime los ficheros ASCII del siguiente modo:

  1. Convierte el fichero ASCII a PS mediante a2ps
  2. El comportamiento de a2ps por defecto es imprimir el contenido de 2 páginas ASCII en una página apaisada

Esto no gusta a muchos usuarios que prefieren una salida «normal». Para cambiar esto editaremos el fichero /etc/apsfilterrc y observaremos que la variable FEATURE toma por defecto el valor 2nTo print two pages on one sheet without a header»). Debemos comentar (o borrar) esa línea y añadir esta otra:

FEATURE=1n

como se observa en este fragmento de mi fichero

...
##############################################################################
# Description
# -----------
# FEATURE=1       tell a2ps to print 1 page  on one sheet with    header
# FEATURE=2       tell a2ps to print 2 pages on one sheet with    header
# FEATURE=1n      tell a2ps to print 1 page  on one sheet without header
# FEATURE=2n      tell a2ps to print 2 pages on one sheet without header
# FEATURE=1l      tell a2ps to print 1 pages in landscape with    header
# FEATURE=1ln     tell a2ps to print 1 pages in landscape without header
#
# This is the default I use now(the original default option was FEATURE=2n)
FEATURE=1n
...

Para suprimir por completo la conversión de ASCII a PS, e imprimir directamente en el modo ASCII de la impresora, se debe quitar el símbolo de comentario (#) al comienzo de la orden USE_RECODE_NOT_AP2S=yes, y por supuesto haber instalado el programa recode.

5.3 Filtros de impresión Red Hat

Red Hat cuenta con su propio sistema de configuración de impresora (printtool) y su propio sistema de filtros de impresión (/usr/lib/rhs/rhs-printfilters), que incluye una herramienta de configuración visual y un administrador gráfico de trabajos de impresión. La configuración de una impresora mediante printtool es muy sencilla y puede hacerse sin muchos conocimientos sobre el sistema. El fichero /etc/printcap para mi Epson Stylus Color 600 obtenido con printtool es (En RedHat 6.0 kernel 2.2.7):

#
# Please don't edit this file directly unless you know what you are doing!
# Be warned that the control-panel printtool requires a very strict format!
# Look at the printcap(5) man page for more info.
#
# This file can be edited with the printtool in the control-panel.
##PRINTTOOL3## LOCAL uniprint NAxNA a4 {} U_EpsonStylusColor stcany 0 
lp:\
        :sd=/var/spool/lpd/lp:\
        :mx#0:\
        :sh:\
        :lp=/dev/lp0:\
        :if=/var/spool/lpd/lp/filter:

El filtro de RedHat se parece más al de magicfilter que al de apsfilter porque genera sólo una cola de impresión para una impresora única lp.


Página siguiente Página anterior Índice general