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.
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.
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:
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 2n
(«To 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.
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
.