olea@iname.com
2:345/108.9@fidonet.org
OJO .- Esto es una versión Alfa (No os la creais mucho ;-) Nota: este documento tiene su origen en la red FidoNet de la cual lo extrajo el maquetador. Por desgracia no puede informar de su fecha original ni de alguna versión más reciente ni siquiera de alguna forma para contactar con el autor vía la Red.
Nota: En este fichero se nombra muchas veces el fichero
printcap
, es el fichero /etc/printcap
. Su contenido está muy
bien explicado en el Configuracion-Impresion-Como
.
El sistema de impresión de Linux, y en general de todos los Un*x basados en BSD, funciona (a grandes rasgos) de la siguiente manera.
El comando lpr
copia el fichero a imprimir en el directorio de spool
indicado en el fichero printcap
(sd
=directorio-spool) y crea en
dicho directorio un fichero de control en el que indica: el fichero (del
directorio de spool) a imprimir, el usuario que solicitó ese servicio de
impresión, los parámetros que se le pasaron en la línea de comandos, etc.
y ahí termina su función.
A continuación entra en juego un daemon (una especie de tsr para los
que venimos del MS-2) llamado lpd
. Este programa se activa
periódicamente y comprueba si hay ficheros de control en el directorio de
spool, y en caso de que los haya realiza las siguientes acciones para
cada uno de dichos ficheros :
sh
del fichero printcap
) , pasándola a través del filtro
de salida si hay alguno definido (orden of
del fichero printcap
)
;
lpr
que
tenía que emplear algún filtro de impresión en concreto (ej.: lpr -t
)
se ejecuta el filtro indicado en la correspondiente entrada del fichero
printcap
; si no se indicó ningún filtro al comando lpr
, se
ejecuta el indicado por el parámetro 'if
' del fichero printcap
.
lpr
en el directorio de
spool) , y su salida estándar a :
printcap
) y la salida de dicho filtro al dispositivo de
impresión asociado a esta impresora (orden 'lp
' del printcap
) ;
printcap
.
Según la descripción anterior un filtro de impresión no es más que un
programa (generalmente un script) que teniendo en su entrada
estándard un fichero en un formato determinado (ej.: troff
) , escribe
en su salida estándar los códigos necesarios para que la impresora imprima
dicho fichero.
¡Fácil, eh! ;-)
A no ser que dispongáis de una impresora PostScript es muy raro que
tengáis programas que puedan imprimir directamente ficheros en muchos de
los formatos más habituales (troff, dvi
, etc...) . Por eso, lo que
se suele hacer es:
dvilj
,
ghostscript
, etc) , emplear dichas utilidades;
A continuación os pongo dos ejemplos de juegos de filtros de impresión. El
primero emplea el PostScript como formato intermedio, por lo que
podéis adaptarlo fácilmente a cualquiera de las muchas impresoras
soportadas por el ghostscript
, y el segundo ejemplo emplea el formato
DVI como formato intermedio.
Ambos ejemplos están preparados para una impresora HP-Deskjet 5?? monocroma, aunque no debe resultaros muy difícil adaptarlos a vuestra impresora en concreto.
En primer lugar, este texto tiene muchos errores, cosas mal explicadas, etc. Enviadme por Net todas las sugerencias y correcciones al texto que creáis interesantes.
Si adaptáis estos filtros para otras impresoras, hacéis otros nuevos, los mejoráis, etc, mandadme el nuevo juego de filtros (o las diferencias si son pocas) de forma que podamos ir creando una base de datos de filtros de impresión y ponerla a disposición de todos, no teniendo los usuarios nuevos que reinventar la rueda cada vez (aunque en este caso no sea muy difícil de reinventar ;-) ).
Fichero /etc/printcap
#
# 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
#
# Modificado 5-1-95 por Paco Andres para incluir los filtros
# para la impresora HP-Deskjet. Y quitar lo que sobra.
#
#
# HP Deskjet
# Se han agnadido los siguientes filtros :
# lpr #, donde # puede ser :
# -d --> Ficheros DVI
# -n --> Ficheros generados por gtroff
# -t --> Ficheros a procesar por groff (este ya llama gtroff si es
necesario)
# -f --> Ficheros PostSript
lp|hpdj:\
:lp=/dev/lp0:\
:sh:\
:sd=/usr/spool/lp0:\
:mx#0:\
:if=/usr/spool/lp0/hpdjlp:\
:df=/usr/spool/lp0/filtro.dvi:\
:nf=/usr/spool/lp0/filtro.gro:\
:tf=/usr/spool/lp0/filtro.troff:\
:rf=/usr/spool/lp0/filtro.postscript:\
:lf=/usr/spool/lp0/hp-log:
Tened en cuenta que la línea :lp=/dev/lp0:
le indica al sistema
que la impresora está conectada a lp0
, si la tenéis en otro puerto
(lp1
, lo más habitual) tendréis que cambiar esa línea a lp1
en
la inmensa mayoría de los casos.
-n
es para que el comando echo
no mande
un avance de línea después de los códigos.
Fichero /usr/spool/lp0/hpdjlp
En caso de ser una distribución RedHat,Programa la impresora para que use el juego de caracteres ISO-8859-1, papel A4, 66 líneas por página (más o menos el estándar Unix) , y que acepte los avances de línea com CR+LF./var/spool/lpd/lp0/hpdjlp
. Suele ser útil hacer un symlink:ln -s /var/spool /usr/spool
#!/bin/bash
echo -ne "\033E\033(0N\033&l26A\033&l66P\033&k2G"
cat
echo -ne "\033E"
Fichero /usr/spool/lp0/filtro.dvi
Permite imprimir los ficheros dvi en la impresora HP-Deskjet. Los pasa
primero a PostScript, y luego lo imprime mediante el ghostcript
.
Cambiando el parámetro -sDEVICE
(y probablemente la resolución) se
puede indicar otro tipo de impresora.
#!/bin/bash
cat > /tmp/fich.dvi.$$
/usr/TeX/bin/dvips -q '-f*' < /tmp/fich.dvi.$$ | gs -q -sDEVICE=deskjet -r300 -dNOPAUSE \
-sPAPERSIZE=a4 -sOutputFile=- -
rm /tmp/fich.dvi.$$
Fichero /usr/spool/lp0/filtro.gro
#!/bin/bash
# Filtro de impresora para procesar la salida de Troff
grops -g | gs -q -sDEVICE=deskjet -r300 -dNOPAUSE -sPAPERSIZE=a4 -sOutputFile=- -
Fichero /usr/spool/lp0/filtro.troff
#!/bin/bash
# Filtro de impresora para procesar ficheros Troff
/usr/bin/groff -i -mdoc -mm -man | gs -q -sDEVICE=deskjet -r300 -dNOPAUSE -sPAPERSIZE=a4 \
-sOutputFile=- -
Fichero /usr/spool/lp0/filtro.postscript
#!/bin/bash
# Filtro de impresora para procesar ficheros PostScript
gs -q -sDEVICE=deskjet -r300 -dNOPAUSE -sPAPERSIZE=a4 -sOutputFile=- -
/etc/printcap
es el mismo que en el caso anterior
Fichero /usr/spool/lp0/hpdjlp
Programa la impresora para que use el juego de carácteres ISO-8859-1,
papel A4, 66 líneas por página (más o menos el estándar Unix) , y que
acepte los avances de línea com CR+LF.
#!/bin/bash
#
# Filtro de impresora de caracter general.
#
#
PATH=/usr/spool/lp0:$PATH:/usr/bin:/bin:/usr/local/bin:/usr/TeX/bin
DIR_FILTROS=/usr/spool/lp0 # Directorio en el que se encuentran
# los filtros de esta impresora
echo -ne "\033E\033(0N\033&l26A\033&l66P\033&k2G"
cat
echo -ne "\033E"
Fichero /usr/spool/lp0/filtro.dvi
Permite imprimir los ficheros
dvi en la impresora HP-Deskjet, emplea el programa dvidj500
#!/bin/bash
#
# Filtro de impresora para los ficheros dvi.
PATH=/usr/spool/lp0:$PATH:/usr/bin:/bin:/usr/local/bin:/usr/TeX/bin
DIR_FILTROS=/usr/spool/lp0 # Directorio en el que se encuentran
# los filtros de esta impresora
TEXFONTS=/var/texfonts/pk/HPDeskJet/
export TEXFONTS
fichero=/tmp/filtro.dvi.$$
cat > $fichero ;
#echo -ne "\033E" # Reseteo la impresora por si acaso
# anulo la salida de errores para que lpd no guarde todo el rollo del
# MakeTeXPK
/usr/local/bin/dvidj500 < $fichero 2> /dev/null
rm $fichero
Fichero /usr/spool/lp0/filtro.gro
#!/bin/bash
# Filtro de impresora para procesar la salida de Troff
grodvi | /usr/spool/lp0/filtro.dvi
Fichero /usr/spool/lp0/filtro.troff
#!/bin/bash
# Filtro de impresora para procesar ficheros Troff
PATH=/usr/spool/lp0:$PATH:/usr/bin:/bin:/usr/local/bin:/usr/TeX/bin
DIR_FILTROS=/usr/spool/lp0 # Directorio en el que se encuentran
# los filtros de esta impresora
TEXFONTS=/var/texfonts/pk/HPDeskJet/
export TEXFONTS
/usr/bin/groff -i -Tdvi -mdoc -mcn -mgm -mgmse -man | $DIR_FILTROS/filtro.dvi
Fichero /usr/spool/lp0/filtro.postscript
#!/bin/bash
# Filtro de impresora para procesar ficheros PostScript
gs -q -sDEVICE=deskjet -r300 -dNOPAUSE -sPAPERSIZE=a4 -sOutputFile=- -
Espero que os sea útil todo este rollo.
El INSFLUG forma parte del grupo internacional Linux Documentation Project, encargándose de las traducciones al castellano de los Howtos (Comos), así como la producción de documentos originales en aquellos casos en los que no existe análogo en inglés.
En el INSFLUG se orienta preferentemente a la traducción de documentos
breves, como los COMOs y PUFs (Preguntas de
Uso Frecuente, las FAQs. :)
), etc.
Diríjase a la sede del INSFLUG para más información al respecto.
En la sede del INSFLUG encontrará siempre las últimas versiones
de las traducciones:
www.insflug.org
. Asegúrese de comprobar cuál es la última versión
disponible en el Insflug antes de bajar un documento de un servidor réplica.
Se proporciona también una lista de los servidores réplica (mirror) del Insflug más cercanos a Vd., e información relativa a otros recursos en castellano.
Francisco José Montilla,
pacopepe@insflug.org
.