Impresi�n Como
Grant Taylor
[email protected] y Brian McCauley
(
[email protected]
Traducci�n: Francisco Escarpa
[email protected]
Una gu�a de c�mo imprimir y ver documentos bajo el sistema operativo
Linux.
______________________________________________________________________
�ndice General:
1. Introducci�n
2. Prep�rense los impacientes.
3. Puertos y dispositivos
4. LPR
4.1. �Qu� necesita?
4.2. �C�mo imprimir con Linux?
4.3. Impresi�n remota e impresi�n local.
4.4. Los programas importantes
4.4.1. La orden lpr
4.4.2. La orden lpq
4.4.3. La orden lprm
4.4.4. la orden lpc
4.5. Los directorios fundamentales.
4.5.1. Y sus correspondientes ficheros.
4.6. /etc/printcap
4.6.1. Los campos de /etc/printcap .
4.6.2. Probemos /etc/printcap con un ejemplo
4.6.3. Valor y al toro: junt�moslo todo
4.6.4. Y de la impresi�n remota, �qu�?
4.6.5. Socorro: no funciona.
4.6.6. �D�nde puedo encontrar un printcap para la impresora xxxxx?
4.6.7. El "efecto escalera", bajo control.
4.6.8. Imprimir por el puerto serie es f�cil.
4.6.9. cat funciona, pero lpd no.
4.6.10. Impresoras que no son dispositivos simples.
4.7. Trucos y problemas
4.7.1. lpr -i o como modificar la impresi�n a nuestro antojo.
4.7.2. ' lpc ' y ' lpq ' advierten : " missing daemons "
4.7.3. Impresi�n sobre red (notas adicionales)
4.8. Los filtros de impresi�n
4.8.1. Los filtros de salida
4.8.2. Depuraci�n de filtros
4.8.3. Filtros M�gicos
4.8.4. Los usuarios de HP estamos de suerte
5. �C�MO SE IMPRIME ... ?
5.1. Texto Llano
5.1.1. pr
5.2. PostScript
5.2.1. Ghostscript
5.3. Mi impresora s�lo trabaja con PostScript
5.3.1. mpage
5.3.2. a2ps, enscript, nenscript
5.3.3. gslp
5.3.4. Utilidades para PostScript
5.4. TeX, LaTeX
5.4.1. dvips
5.4.2. eps, dvilj, dvi500
5.5. texinfo
5.6. *roff ; p�ginas man
5.7. Adobe Acrobat. Ficheros PDF
5.8. Tipos
5.9. Documentos para fax.
5.9.1. FLEXFAX
5.9.2. mgetty+sendfax
5.9.3. EFAX
6. Visualizaci�n
6.1. Con X-Window instalado
6.1.1. ghostview
6.1.2. gspreview
6.1.3. xdvi y xtex
6.2. �Y si no tengo instalado X Window ?
6.2.1. Ghostscript, de nuevo
6.2.2. dvgt
7. Copyright
8. Anexo: El INSFLUG
______________________________________________________________________
1. Introducci�n
Esta es la versi�n espa�ola del Printing-HOWTO de Linux. �ste
documento forma parte de la segunda generaci�n de linux FAQ (-- Nota
del Revisor El Linux-FAQ original devino en una bestia inmanejable,
por lo que se cambi� el esquema y se fraccion� en secciones
independientes para cada aspecto del sistema operativo.
Este COMO en particular trata de c�mo administrar los distintos
aspectos de impresi�n bajo Linux, configurar impresoras, instalar
aplicaciones para hacerlas funcionar... Originalmente escrito por
Grant Taylor
[email protected]), posteriormente incorpor� el lpd-
FAQ de Brian McCauley (
[email protected]).
Otros COMOs detallan aspectos acerca de la conexi�n en red.... Aunque
pueden encontrarse estos documentos en los lugares m�s insospechados,
su "domicilio" oficial es:
ftp://sunsite.unc.edu/pub/linux/docs/Howto (-- Igualmente, la mayor�a
de los mirrors de Sunsite contendr�n las traducciones de los COMO, en
su directorio
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/translations/es--)
(busque mejor en los Mirrors. Sunsite es una playa muy concurrida)
Junto con el resto de los FAQ de usenet, podemos encontrarlos en
ftp://rtfm.mit.edu
Env�en los comentarios, errores detectados y sugerencias a Brian y
Grant a
[email protected] (versi�n en ingl�s) o a Francisco
Escarpa para la traducci�n espa�ola (
[email protected] ).
Les rogamos que nos comuniquen cualquier nuevo programa, fichero, ...
que conozcan y no figure en este documento.
Grant ha configurado un servidor de correo centrado en la impresi�n y
visualizaci�n bajo Linux, incluyendo la �ltima versi�n de este
documento (en ingl�s). Para acceder, env�e un mensaje de correo
electr�nico a
[email protected], con el cuerpo de mensaje
'INFO'. Recibir� como respuesta una lista de los ficheros disponibles.
Si el cuerpo del mensaje es 'get fich1 [fich2 fich3]', recibir� una
copia de los ficheros pedidos.
Para esta traducci�n se ha reelaborado ligeramente el documento
original, eliminado repeticiones, reducido los detalles particulares
de cada programa al m�nimo imprescindible, remitiendo al lector a la
documentaci�n correspondiente, y a�adiendo alguna peque�a novedad
conocida. Agradeceremos las sugerencias, notificaci�n de errores y
dem�s.
2. Prep�rense los impacientes.
Usted ya conoce UNIX, y ya tiene configurado el sistema (o se lo han
configurado) y desea con toda urgencia imprimir: H�galo con la orden:
lpr fichero
y por su impresora saldr�n las tan ansiadas p�ginas. Si no funciona,
lea de cabo a rabo este documento.
3. Puertos y dispositivos
Como es sabido, Unix mapea los dispositivos sobre el sistema de
ficheros; as�, cada puerto f�sico est� reflejado en un fichero,
generalmente bajo /dev, sobre el que se ejecutan las operaciones de
e/s.
En un sistema de bus tipo AT, com�n a todos los PC actuales, el puerto
LPT1 equivale en Linux al fichero de dispositivo /dev/lp1 y sucesivos.
Precisando:
Nombre Mayor Menor Direccion E/S
lp0 6 0 0x3bc
lp1 6 1 0x378
lp2 6 2 0x278
Del mismo modo, los puertos COM se controlan a trav�s de los
dispositivos ttyS* (Consulte el Serie-Como, en
http://www.insflug.org
para m�s informaci�n)
Utilice los dispositivos /dev/ttyS? (o /dev/ttys? si lo prefiere) para
conectar una impresora por l�nea serie. No utilice /dev/cua?.
En algunos sistemas, puede haber enlaces simb�licos hacia estos
dispositivos, como /dev/lpr -> /dev/lp1, o /dev/impserie ->
/dev/ttyS0. Hay a quien le parece muy elegante, y quien lo considera
de p�sima praxis. (lea la p�gina man 'ln' para m�s informaci�n ).
Recuerde que NO puede simult�neamente tener soporte para impresora y
para comunicaciones v�a puerto paralelo (conectarse con plip, o un
disco ZIP paralelo, por ejemplo); si necesita ambas funcionalidades es
una buena idea recompilar el kernel, y preparar el soporte de
impresi�n y de comunicaciones como m�dulos independientes, que se
cargar�n en el kernel cuando sea necesario.
4. LPR
Todo sistema que se precie es capaz de gestionar una o varias
impresoras, con uno o varios usuarios, que les env�an distintas clases
de documentos, m�s o menos dignamente.
Unix resuelve estos problemas mediante un conjunto de programas, los
servidores de impresi�n, que gestionan los trabajos pendientes, y los
encauzan a las impresoras adecuadas, todo de manera completamente
transparente al usuario.
Hay dos familias de servicios de impresi�n: "lp" en UNIX System V
(AT&T), y "lpr", en los U*X BSD, y Linux. En este documento s�lo se
hablar� del segundo sistema; el sistema lp no es de dominio publico, y
no conocemos ninguna versi�n que lo sea; de todos modos, ambos tienen
hoy d�a la misma funcionalidad.
Una variante muy prometedora de lpr, LPRng, obvia toda una serie de
limitaciones del lpr original. Nos limitaremos a mencionar las
diferencias en los cap�tulos concretos.
Dicen los que saben que lp es m�s robusto, pero a la hora de trabajar
en red lpr se destaca por varios cuerpos.
4.1. �Qu� necesita?
Asumimos que usted sabe c�mo editar un archivo de texto bajo Linux, y
tiene los conocimientos b�sicos sobre permisos y propiedad de
archivos.
Tambi�n suponemos que su sistema Linux funciona sin tropiezos. Si
desea imprimir en m�quinas remotas, deber� adem�s tener configurado y
funcionando el soporte de red (vea en NET-3-HOWTO (-- N. del Revisor:
ver secci�n ``''--) ).
Revise las p�ginas de manual de los comandos chmod y chown para m�s
informaci�n.
4.2. �C�mo imprimir con Linux?
El camino m�s corto en UNIX (y bajo Linux), es enviar los datos a
imprimir directamente al dispositivo adecuado. El siguiente comando
env�a un listado del directorio a la primera impresora en paralelo
(hablando en DOS, LPT1:):
ls > /dev/lp1
El problema de este m�todo es que no aprovecha las capacidades de
multitarea de Linux, debido a que el tiempo que tarda el comando en
completarse ser� el mismo que emplee la impresora en despachar el
trabajo.
En una impresora lenta, o en una apagada o sin papel, puede
prolongarse un poco. Podr�amos ejecutar el comando simplemente en
segundo plano, pero no adelantar�amos mucho. Adem�s, deber� tener
privilegios de superusuario.
Un remedio mejor es crear un �rea tamp�n (spool), es decir, guardar
los datos a imprimir en un fichero temporal, y arrancar un proceso en
segundo plano que env�e los datos a la impresora, y gestione las
incidencias que se presenten.
Esencialmente, as� funciona Linux. Para cada impresora, se define un
�rea tamp�n, donde cada trabajo pendiente se almacena en un fichero.
Un proceso en segundo plano (llamado el demonio de impresi�n) analiza
met�dica y constantemente los ficheros tamp�n, buscando nuevos datos a
imprimir. Cuando aparece alguno, son enviados a la impresora
apropiada; cuando m�s de un fichero est� a la espera, se colocan en
una cola (el primero que entra es el primero que se procesa), por lo
que se habla propiamente de la "cola de impresi�n".
En el caso de impresi�n remota, los trabajos se gestionan localmente,
como cualquier otro, pero el demonio de impresi�n lo env�a a trav�s de
la red hacia el ordenador o impresora destino.
La informaci�n que el demonio de impresi�n necesita para su trabajo
(el dispositivo f�sico, el tamp�n de datos, la m�quina e impresora
remota ...) se almacenan en un fichero llamado "printcap", que
describiremos m�s tarde.
En lo sucesivo, el t�rmino "impresora" se referir� a una m�quina
l�gica definida en /etc/printcap. El concepto "impresora f�sica" o
"trasto", define la cosa que mancha papel. Es perfectamente posible
describir m�ltiples entradas en /etc/printcap que se refieren a un
s�lo trasto, pero por caminos tortuosos. No se preocupe, lo
aclararemos al describir printcap.
4.3. Impresi�n remota e impresi�n local.
La impresi�n remota nos permite enviar trabajos de impresi�n desde una
m�quina, hacia otra (ordenador/impresora) conectada a una red; por
ejemplo, nuestro equipo funciona de servidor en una red, o si una
impresora asignada a nuestra m�quina debe ser accesible por otros
ordenadores.
Imprimimos localmente cuando usuarios de nuestra m�quina env�an
trabajos a una impresora conectada directamente a la misma.
4.4. Los programas importantes
El sistema de impresi�n de Linux se sustenta en cinco programas, que
deber�an estar donde aparecen en el siguiente listado, propiedad de
root, y grupo lp (o daemon, seg�n el sistema en concreto):
-rwxr-xr-x root lp /bin/lpr
-rwxr-xr-x root lp /bin/lpq
-rwxr-xr-x root lp /bin/lpc
-rwxr-xr-x root lp /bin/lprm
-rwxr-x--- root lp /sbin/lpd
Los cuatro primeros tienen por fin enviar, cancelar y examinar los
trabajos de impresi�n. /sbin/lpd es el demonio de impresi�n.
OJO: Los directorios, permisos y propiedad de los ficheros pueden
diferir a los de su sistema, aunque no deber�an ser MUY distintos.
Hay p�ginas de manual que explican con detalle todas estas �rdenes y
que deber�a consultar para ampliar informaci�n.
Es importante saber que, por defecto, lpr, lprm, lpc y lpq trabajan
con una impresora llamada "lp". Si define la variable de entorno
PRINTER con el nombre de una impresora, pasar� a ocupar el valor por
defecto. Se puede indicar sobre la marcha una impresora distinta con
la opci�n -P impresora en la l�nea de �rdenes.
4.4.1. La orden lpr
Con lpr se env�a un trabajo a la impresora. Este se copia en el
tamp�n, donde el demonio de impresi�n lo encuentra, y lo env�a a la
impresora f�sica. Si no le suministra un fichero, lpr usar� la entrada
est�ndar.
4.4.2. La orden lpq
lpq muestra los trabajos pendientes para la impresora deseada ("lp"
por defecto). lpq muestra el n�mero de cada trabajo, que lo identifica
para cualquier proceso posterior.
Muestra tambi�n el estado de cada trabajo. "active" indica que el
demonio est� enviando el trabajo a su destino, o al menos lo intenta.
Si no, un n�mero indica su orden en la cola de impresi�n.
4.4.3. La orden lprm
lprm elimina un trabajo de la cola, es decir, borra los ficheros en
espera en el directorio tamp�n. Puede indicar espec�ficamente la
identidad de un trabajo particular, o "-", con lo que cancelamos todos
los trabajos destinados a la impresora seleccionada .Si se es
superusuario, y quiere eliminar todos los trabajos pertenecientes a un
usuario, especifique su nombre de usuario en la l�nea de �rdenes.
4.4.4. la orden lpc
Con lpc podemos comprobar el estado de las impresoras, y controlar
algunos aspectos de su uso. Particularmente, le permite arrancar y
parar el tamp�n de datos, permite activar y desactivar impresoras, y
reorganizar el orden de los trabajos en cola. Con las �rdenes
siguientes desactivamos la impresora "impre", activamos la cola de
"tuimpre", y mueve el trabajo 37 al principio de la cola.
lpc down impre
lpc enable tuimpre
lpc topq 37
Si no especificamos argumentos, lpc entrar� en modo di�logo. con "?"
obtenemos ayuda. Advierta que algunas funciones de lpc est�n
reservadas para el superusuario.
4.5. Los directorios fundamentales.
Realmente, s�lo hay un directorio importante: el �rea de tamp�n donde
se almacenan los datos a la espera de que lpd decida qu� hacer con
ellos. Sin embargo, un sistema t�pico deber�a configurarse en varios
directorios, uno para cada impresora, lo que facilita notablemente el
mantenimiento. En la mayor�a de las instalaciones, /var/spool/lpd es
el directorio tamp�n principal, y cada impresora tiene un
subdirectorio particular, con el mismo nombre que la impresora. As�,
si tiene una impresora llamada PJL-16 que admite PostScript y HPGL,
deber�a crear dos directorios, por ejemplo /var/spool/lpd/PJL-16-ps y
/var/spool/lpd/PJL-16-hpgl.
Los directorios temporales deber�an pertenecer a root, grupo lp; user
y group deben poder leer y escribir, y el resto, leer. permisos:
-rwxrwxr-x
(775)
Para cada directorio de impresora, la orden adecuada ser�a:
chmod ug=rwx,o=rx PJL-16-ps
chgrp lp myprinter
Los destinos, permisos y propietarios aqu� indicados deben
considerarse como indicativos, pues pueden variar entre distintos
sistemas e instalaciones.
4.5.1. Y sus correspondientes ficheros.
Adem�s de los programas ya tratados, cada directorio temporal debe
contener como m�nimo estos cuatro ficheros: ".seq" , "errs" , "lock" y
"status". Deber�n tener permisos
-rw-rw-r--
(664).
El fichero .seq contiene la secuencia de trabajos enviados. status
contiene el mensaje que devuelve "lpc stat". El fichero lock impide al
lpd imprimir al tiempo dos trabajos en la misma impresora, y errs
guarda un registro de los fallos de la impresora.
El fichero "errs" es actualmente potestativo, y ahora puede llamarse
como le apetezca su nombre se especificar� en /etc/printcap. Debe,
sin embargo, existir un fichero que permita a lpd registrar los
mensajes de error.
4.6. /etc/printcap
/etc/printcap es un fichero texto, modificable con su editor favorito.
Su propietario debe ser root y debe tener permisos
-rw-r--r--
(644)
Aunque a golpe de vista parezca tan comprensible como la piedra
Rosetta , su estructura es muy sencilla y asequible. Parte de la mala
fama se debe a que algunas distribuciones no incluyen p�gina de manual
para printcap, y el hecho de que muchos printcap est�n generados por
programas, o por gente cuya manera de despreciar al g�nero humano es
omitir comentarios que ayuden a su compresi�n. Desde aqu� hacemos un
llamamiento para que su fichero printcap sea tan legible como sea
posible.
Cada entrada de printcap describe una impresora. Mejor a�n, cada
entrada de printcap provee una denominaci�n l�gica para un dispositivo
f�sico, y describe c�mo deben los datos ser enviados y manejados por
�l.
Por ejemplo, una entrada de printcap definir� qu� puerto vamos a usar,
qu� directorio tamp�n, qu� proceso deben soportar los datos, qu� clase
de errores debemos notificar, qu� volumen de datos se permiten enviar
como m�ximo, o limitar el acceso de ciertos dispositivos.
Adem�s, podemos definir distintos modos de procesar datos para una
misma impresora. Por ejemplo, una misma impresora de HP puede manejar
datos en formatos PostScript, HPGL y PCL, dependiendo de la secuencia
de �rdenes que le enviamos al comienzo de cada trabajo. Tendr�a
sentido definir los tres modos de trabajo como sendas impresoras, cada
una de las cuales procesar� los datos dependiendo del modo de trabajo.
Los programas que generan datos ps se enviar�n a la impresora PS, los
dibujos HPGL a la impresora HPGL, y as� sucesivamente.
Llamaremos "filtros" a los programas que procesan los datos a
imprimir. Un filtro puede incluso no enviar ning�n dato al puerto.
4.6.1. Los campos de /etc/printcap .
Un ejemplo t�pico de entrada en /etc/printcap podr�a ser:
# Ejemplo de printcap con dos alias
impresora|HP850C:\
# lp es el dispositivo de impresion, en este caso, la primera impresora
:lp=/dev/lp1:\
# sd indica el directorio tampon
:sd=/var/spool/lpd/HP850C:
Como vemos, cada entrada de /etc/printcap se estructura en una serie
de campos, encabezados por una etiqueta, y limitados por dos puntos, a
excepci�n del primer campo, que describe la impresora. Los campos
pueden tener tres tipos de valores - Texto, l�gico y num�rico, en los
que nos extenderemos m�s adelante.
La primera l�nea de la entrada determina el nombre y alias de la
impresora. La impresora por defecto deber�a llamarse "lp"; por
ejemplo, si la impresora del ejemplo anterior es la �nica que tenemos,
la primera l�nea ser�a:
# Ejemplo para la impresora por defecto
lp|HP850C:\
Podemos usar el nombre que nos apetezca como "La Picadora de papel del
despacho de Gertrudis", aunque no parezca quiz� muy pr�ctico. Ojo:
S�lo podemos tener una impresora llamada "lp".
Los siguientes campos son los m�s comunes, y los m�s importantes:
Campo Tipo Descripcion
lp Texto Dispositivo de impresion ( ej.: /dev/lp1 )
sd Texto Nombre del directorio tampon de esta impresora
lf Texto Fichero que almacena el registro de errores
if Texto Nombre del filtro de entrada
rm Texto Nombre del host de impresion remota
rp Texto Nombre de la impresora remota
sh Logico Suprime las paginas que separan los trabajos
sf Logico Suprime las paginas en blanco al final del trabajo
mx numerico Tamagnio maximo del trabajo de impresion (en bloques)
� lp apunta al puerto/dispositivo de impresi�n. Si especificamos
/dev/null como dispositivo, el resto de los procesos se ejecutan
normalmente, pero los datos de salida van a parar al inodoro. No se
utiliza a excepci�n de las pruebas de configuraci�n del
dispositivo. Cuando configure una impresora remota con los campos
rm y rp , deber�a poner ":lp=:" en /etc/printcap, indicando que no
est� asignada a ning�n dispositivo local.. No deje este campo en
blanco a menos que use una impresora remota, o el demonio de
impresi�n se quejar� amargamente, si no especifica un dispositivo
de impresi�n.
� lf guarda un registro de los errores de impresi�n. Cualquier
fichero que especifique deber� existir antes de su uso, o no se
registrar�n las incidencias.
� if indica el nombre del filtro de impresi�n a ejecutar. Los filtros
son programas que reciben datos por la entrada est�ndar, y los
devuelven procesados por la salida est�ndar.
Un empleo t�pico es detectar texto llano y convertirlo en
PostScript para imprimirlo en ese tipo de trastos. Son muy �tiles,
por ejemplo, para eliminar el efecto escalera, o cambiar la p�gina
de c�digos sin necesidad de cambiar la configuraci�n de la
impresora cada vez que la usemos entre UNIX y DOS.
Cuando se especifica un filtro de entrada, el demonio de impresi�n
no env�a los datos pendientes al dispositivo especificado. En su
lugar, arranca el filtro y asigna el fichero temporal a la entrada
est�ndar, y el dispositivo de impresi�n como salida est�ndar.
� rm y rp controlan el destino de la impresi�n remota. Enviar el
documento a imprimir a una impresora remota es tan f�cil como
indicar el anfitri�n en rm, la impresora correspondiente en rp, y
asegurarse que lp est� vac�o. F�jese en que los datos se tamponan
localmente antes de ser enviados, y que le ejecutar� cualquier
filtro que especifique.
Una entrada t�pica de /etc/printcap en la m�quina local
(pera.huerta.net) para trabajar sobre la impresora picapapel, en
la estaci�n r�bano.huerta.net (remota), ser�a:
picapapel:lp=:rm=r�bano.huerta.net:rp=picapapel:sd=/var/spool/lpd/picapapel:
En la m�quina remota necesitar� que /etc/hosts.equiv o
/etc/hosts.lpd contenga la l�nea pera.huerta.net; Tenga cuidado con
los permisos de acceso. Vea el punto ``Y de la impresi�n remota,
�qu�?''.
� sh y sf: Portadillas y separadores. Salvo que haya mucha gente
distinta usando su impresora, probablemente no estar� interesado en
las p�ginas separadoras de trabajos. Las p�ginas de fin de trabajo
son particularmente molestas cuando se trabaja con procesadores de
texto, que componen p�ginas completas, por lo que si especificamos
sf, tendremos al final de cada trabajo una p�gina en blanco.
sf es muy �til, sin embargo, si usamos la impresora para listar
directorios, ficheros en crudo ..., asegur�ndonos que el trabajo
sale completo de la impresi�n. Se puede presentar un problema si
tenemos una impresora PostScript, al quedar residente el �ltimo
tipo de letra utilizado. Con el campo :tr: lo evitaremos. Es
preferible en estos casos dejar :sh:, y que sean los filtros
quienes se encarguen de generar las portadillas.
� mx limita el tama�o del tamp�n de datos, se�alando una cantidad en
bloques de 1 K ( 1024 bits ). Si mx=0, el l�mite viene dado por el
espacio disponible en disco. Recuerde que lo que limitamos es el
tama�o del tamp�n, no la cantidad de datos impresos.
Si intentamos sobrepasar el l�mite, el fichero simplemente se
trunca, y el usuario recibe el mensaje
lpr: fichero: copy file is too large".
mx es �til si tiene programas que accidentalmente pueden generar un
volumen desproporcionado de datos a imprimir (im�genes, por ejemplo);
para impresoras ps, no suele tener mucho inter�s, pues un volumen
peque�o de datos en formato ps pueden generar una notable cantidad de
papel impreso.
Podemos sustituir el l�mite de mx escribiendo en cada directorio
tamp�n un fichero llamado "minfree" que contiene el espacio m�nimo
disponible que permita aceptar trabajos, en forma de fichero texto con
el n�mero de bloques m�nimos disponibles. Normalmente, suele ser un
enlace con el original en /var/spool/lpd, ya que es inusual que cada
impresora deba tener un m�nimo diferente.
4.6.2. Probemos /etc/printcap con un ejemplo
El siguiente gui�n de shell es un filtro de entrada muy simple. S�lo
encadena su entrada al final de un fichero en /tmp, tras una pancarta
adecuada. Usaremos este filtro en el campo if, y enviaremos los datos
a /dev/null, ahorr�ndonos las quejas del demonio especificando un
dispositivo de impresi�n.
#!/bin/sh
# Este filtro debera colocarse en el directorio tampon, con el nombre
# filtro_entrada, propiedad de root, grupo lp y permisos -rwxr-xr-x
#
echo ------------------------------------------------>/tmp/testlp.out
date >> /tmp/testlp.out
echo ------------------------------------------------>>/tmp/testlp.out
cat
Y aqu� tenemos nuestra flamante entrada en /etc/printcap. Vea que el
formato es razonablemente inteligible, usando caracteres de
continuaci�n de l�nea "\" al final de cada una, excepto la �ltima (de
hecho, cada entrada en /etc/printcap es una sola l�nea):
impre|PLJ-H1998:\
:lp=/dev/null:\
:sd=/var/spool/lpd/PLJ-H1998:\
:lf=/var/spool/lpd/PLJ-H1998/errores:\
:if=/var/spool/lpd/PLJ-H1998/filtro_entrada:\
:mx#0:\
:sh:\
:sf:
Ojo: NO DEJE ESPACIOS EN BLANCO, o no funcionar� (le aparecer�n
impresoras sin nombre, no lograr� volcar los trabajos, y se acumular�n
en cola generosamente)
4.6.3. Valor y al toro: junt�moslo todo
� Primero: DEBE SER EL SUPERUSUARIO (root), tanto si le gusta como si
no.
� Segundo: Compruebe los permisos y situaciones de lpr, lprm, lpc,
lpq y lpd.
� Tercero: Cree el directorio tamp�n de su impresora: (recuerde que
el propietario debe ser root, el grupo lp, y los permisos -rwxrwxr-
x con las �rdenes:
mkdir /var/spool/lpd /var/spool/lpd/impre
chown root.lp /var/spool/lpd /var/spool/lpd/impre
chmod ug=rwx,o=rx /var/spool/lpd /var/spool/lpd/impre
� Cuarto: En el directorio tamp�n cree los ficheros necesarios, con
los debidos permisos y propietarios:
cd /var/spool/lpd/impre
touch .seq errores status lock
chown root.lp .seq errs status lock
chmod ug=rw,o=r .seq errs status lock
� Quinto: Cree el script filtro de entrada en el directorio tamp�n.
Use por ahora el filtro de prueba anterior. Aseg�rese que el
fichero pertenece a root.lp, y es ejecutable para todos.
� Sexto: Cree el fichero /etc/printcap tal y como lo hemos descrito
en el punto anterior. Su propietario ser� root y sus permisos -rw-
r--r--.
� S�ptimo: Compruebe que rc.local (normalmente en /etc/rc.d/)
contiene la l�nea /sbin/lpd, y a��dala si no est�. Esto hace que
arranque el demonio de impresi�n al arrancar. De todos modos puede
arrancarlo a mano con la orden lpd.
� Octavo: Haga una prueba: cruce los dedos y teclee
ls -l | lpr -Pimpre
� Noveno: Busque en /tmp un fichero llamado testlp.out. Deber�a
contener un listado del directorio, con un encabezado.
� D�cimo: Si ha funcionado (y no dudamos que habr� sido as�), edite
/etc/printcap, y copie la entrada de prueba en el mismo fichero; En
la primera entrada, cambie el nombre de la impresora a "testlp", o
el que usted prefiera, pero que no use como nombre real de
impresora. En la segunda entrada (que ahora ser� la de su impresora
real), cambie el contenido de lp=/dev/null al del puerto de
impresora (normalmente ser� /dev/lp1) de su ordenador, salvo que
vaya a utilizar una impresora remota, en cuyo caso deber� definir
rm y rp. Cambie el nombre del filtro if si tiene ya uno previsto, o
supr�malo si no va a utilizar ninguno.
� Once: Reinicie el sistema, o mate el demonio de impresi�n y
arr�nquelo, ya que lpd s�lo lee /etc/printcap al comenzar su
trabajo.
� Doce: Haga una prueba, y aprecie lo bien que funciona su impresora
(Si tiene problemas con el efecto escalera, siga leyendo).
Para a�adir nuevas impresoras, s�lo tendr� que repetir la entrada de
printcap, con las modificaciones pertinentes a cada dispositivo.
4.6.4. Y de la impresi�n remota, �qu�?
Como primer paso, cualquier m�quina que intente imprimir en su
sistema, debe estar registrada en cualquiera de los ficheros
/etc/hosts.equiv o /etc/hosts.lpd, que son simples ficheros de texto,
con un nombre de maquina por l�nea. Es preferible el segundo,
reservando el primero para proporcionar mayores permisos de acceso, lo
que deber�a ser evitado en lo posible.
Puede restringirse el uso tanto por nombre como por grupos.
Especifique los grupos autorizados con uno o varios campos ":rg:" en
/etc/printcap - :rg=admin: s�lo autorizar� el acceso a la impresora a
los usuarios asignados al grupo admin. Puede tambi�n limitar el acceso
a aquellos usuarios con cuenta en su sistema utilizando el campo
l�gico :rs:.
4.6.5. Socorro: no funciona.
Algo falla; Lo primero que debemos hacer es revisar la existencia y
los permisos y propiedad de los ficheros y directorios anteriormente
descritos. Como comprobar� los permisos de UNIX son algo juguetones
hasta que se les controla. No se azore, y siga la siguiente rutina de
control. Recuerde que cualquier modificaci�n de /etc/printcap acarrea
matar el demonio de impresi�n y arrancarlo de nuevo, o (�ltimo y
brutal recurso) reiniciar el sistema.
1. ejecute "ls -l > /dev/lp?" (como root)
� La impresora funciona: 2
� La impresora no funciona: Compruebe el puerto de impresi�n, el
cable, y que la impresora f�sica este encendida y lista.
2. pruebe con lpr -P<impresora>
� La impresora responde: 7
� La impresora no responde: 3
3. Aparecen mensajes de error indicando que no se puede escribir
disco, que el directorio tamp�n existe y que tiene los permisos
necesarios.
� no hay mensajes: 4
4. ejecute
ps -ax | grep lpd
y vea si aparece lpd en el listado, o hay un mensaje acerca del demo�
nio de impresi�n:
� lpd no est� arrancado: Vea si rc.local tiene una l�nea /sbin/lpd;
si no, a��dala y reinicie el sistema. Puede arrancarlo a mano con
/sbin/lpd como root.
� lpd est� funcionando: 5
5. Compruebe que el filtro de impresi�n especificado en if funciona.
(filtro < datos >salida)
� El filtro no funciona: corr�jalo, y pruebe de nuevo
� El filtro funciona: 6
6. Ejecute "lpc status".
� Aparecen m�s impresoras que las descritas, algunas con el nombre en
blanco: Hay espacios en blanco dentro de la entrada de la impresora
en /etc/printcap. Revise la sintaxis de la entrada.
� s�lo aparece una impresora que no es lp: Si no ha especificado
nombre de impresora, lpr usar� lp por defecto. Pruebe
lp -P<impresora>
� La impresora est� deseleccionada (down): ejecute
lpc up <impresora>
(debe ser superusuario).
7. La impresora funciona, pero imprime mal:
� Se imprimen las cuatro o cinco primeras l�neas, en escalera:
Necesita un filtro de entrada. Vea ``Efecto Escalera''
� El fichero no se imprime completo: Elimine el l�mite en mx con
:mx#0: en /etc/printcap.
Si tras este rastreo sus dificultades contin�an, tenemos un buen
problema. Una buena idea para aislar fallos es incluir el demonio
"syslogd" en el arranque, de modo que obtengamos un registro de las
incidencias de los procesos arrancados, que puedan ayudar al rastreo.
Un problema que ha ido apareciendo y desapareciendo de modo recurrente
en distintas versiones de Linux est� asociado a los mensajes "job
queued, but cannot start daemon" o "lpc: connect: no such file or
directory", y lpd s� est� corriendo, parece manifestar un conflicto
entre los m�dulos de red y el resto del sistema, y que se manifiesta
si la red no est� correctamente configurada. Si no est� conectado a
una red, suele corregirse a�adiendo en la configuraci�n de arranque:
ifconfig lo localhost
route add localhost
4.6.6. �D�nde puedo encontrar un printcap para la impresora xxxxx?
Si ha le�do todo hasta ahora, comprobar� que esta pregunta carece de
sentido. No se le ocurra preguntar en usenet, si quiere que su
dignidad se mantenga a salvo, y l�ase este documento completo.
4.6.7. El "efecto escalera", bajo control.
Mientras que en *DOS el indicador de nueva l�nea se compone de los
caracteres CR y LF (retorno de carro y salto de l�nea), UNIX termina
las l�neas con LF. Esto hace que, si en una impresora configurada para
*DOS imprimimos un documento UNIX, obtendremos una sucesi�n de l�neas,
que acabar�n march�ndose inmediatamente por el margen derecho del
papel.
Tenemos dos v�as para corregirlo: Reconfigurar la impresora para que
interprete LF como CR+LF, algo molesto si alterna entre *DOS y Linux,
o a�adir un filtro de impresi�n, que lo haga sobre la marcha.
Ofrecemos dos: uno general, y el otro espec�fico para impresoras HP.
#!/bin/sh
# filtro general para prevenir el efecto escalera
if [ "$1" = -c ] ; then
cat
else
sed -e s/$/^M/
fi
echo -ne \\f
#!/bin/sh
# filtro para corregir el efecto escalera en impresoras HP
echo -ne \\033\&k2G
cat
echo -ne \\f
El car�cter
^M
con vi use C-v C-m, y con emacs, C-q C-m (C es la tecla Control).
El mejor sitio para guardar estos filtros es el propio directorio
tamp�n de la impresora. Recuerde que deben especificarse en
/etc/printcap en el campo :if=<filtro>:, con permisos -rwxrwxr-x, y
propiedad root.lp.
4.6.8. Imprimir por el puerto serie es f�cil.
Primero hemos de ver si lpd se queja enviando un error acerca de
ioctl(TIOEXCL). Si es as�, deber�amos conseguir una versi�n de lpd que
lo acepte (lpd-590p2, por ejemplo).
Necesitaremos configurar dos grupos de campos, adem�s de la velocidad
de transferencia br (Observaci�n: Configurar el campo ":fc:" puede
puentear el valor del campo ":br#:", as� que aseg�rese de configurar
los dos correctamente).
Cada campo puede tener bits activados y desactivados. Se debe empezar
desactiv�ndolos con los campos ":fc#*:" y ":xc#*:", para activarlos
posteriormente con ":fs#*:" y ":xs#*:".
Configurar br#; es obvio: ":br#9600:
Es muy f�cil traducir la configuraci�n de stty a los campos de
/etc/printcap. Consulte la p�gina de manual de stty para obtener m�s
informaci�n.
Utilice stty para configurar el puerto de su impresora de manera que
con "cat" pueda enviarle un fichero, e imprimirlo sin problemas. Aqu�
tiene un ejemplo de la configuraci�n del puerto serie de la impresora:
# darkstar:/var/spool/lpd # stty -a < /dev/ttyS2
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr
-igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop
-echoprt -echoctl -echoke
Deber� estudiar el control de flujo de su impresora serie, y aplicar
las correcciones necesarias a la configuraci�n del puerto al que est�
conectado el equipo.
Una vez tengamos la configuraci�n ajustada, de modo que con la orden
cat fichero > /dev/ttyS?
la impresora escriba correctamente, consultaremos el fichero
/usr/src/linux/include/linux/termios.h ( no ser� mala idea imprimirlo;
as� sabremos si funciona :-).
En la secci�n que empieza con
/* c_cflag bit meaning */
#define CBAUD 0000017
est� detallado el valor de los bits de "fc#" y "fs#". Apreciar� que
los nombres que aparecen aqu� (tras las velocidades de transmisi�n)
coinciden con una de las l�neas del listado producido por stty. �Ve
qu� f�cil?
Estos campos, en stty, van precedidos por un gui�n (-). Sume los
valores (en octal) que aparecen en el listado. Este valor representa
los bits a LIMPIAR; es el valor del campo :fc#*:. Note que, como
deber� activar posteriormente los bit necesarios, podr�a usar
directamente ":fc#0177777:".
Ahora repita el mismo proceso para las opciones sin gui�n en la salida
de stty. En el ejemplo, los bits importantes son CS8 (0000060), HUPCL
(0002000) y CREAD (0000200). Considere tambi�n los indicadores para la
velocidad de transmisi�n (en mi caso 0000015). S�melos; en este caso,
tendremos 0002275: el valor del campo :fs#*: (En mi caso, ":fs#02275:"
funciona).
Haremos lo mismo con la siguiente secci�n de termios.h, que comienza
con "c_lflag bits". En mi caso, no he necesitado ning�n ajuste, y
utilizo ":xc#0157777: y ":xs#0:".
Una vez modificado printcap, intente imprimir con lpr. Si no funciona,
siga leyendo.
4.6.9. cat funciona, pero lpd no.
Mantener "lpd" en forma se explica en la p�gina adecuada del manual,
pero si le persiguen los problemas de configuraci�n, puede evitar que
lpd establezca la configuraci�n del puerto, haciendo que su impresora
no presente un dispositivo normal (vea la secci�n ``'').
El proceso a seguir es el siguiente:
1. el campo :lp: de /etc/printcap deber� apuntar a /dev/null1 (cr�elo
con mknod /dev/null1 c 1 3), porque no queremos a /dev/null s�lo
para nosotros. Elimine los campos :br: y :fs:, :fc:, :xs: y :xc:.
2. Cree un script, por ejemplo, testserie, tal que este:
#!/bin/sh
echo if: $* >> /var/spool/lpd/resultados
# /dev/lp debe estar enlazado (con ln -s) a /dev/ttyS?, donde esta la
# impresora
exec su-filtro-de-entrada-viejo $* > /dev/lp
o si no tiene un :if: instalado
#!/bin/sh
echo if: $* >> /var/spool/lpd/resultados
# asumimos que /bin/sh es bash al usar "echo -ne"
echo -ne \\f > /dev/lp
3. Aseg�rese que es ejecutable y legible para todos (rwxrwxr-x).
Pruebe el filtro con
# testserie < algo-que-imprimir
y vea si sale algo por la impresora. Modifique /etc/printcap, para que
if sea "testserie" (o el nombre que le haya dado).
4. Con stty, configure el puerto de la impresora. Intente imprimir.
Ahora podr� saber si hay datos en el tamp�n, y algo deber�a
imprimirse si el paso 3 funcion�.
Ahora, si el proceso con if funciona, y cree que la configuraci�n del
printcap original es la correcta, vuelva a revisar la configuraci�n
del puerto, las etiquetas de termios.h ... Si a�n no funciona,
probablemente lpd tiene un defecto, y deba obtener una versi�n nueva.
4.6.10. Impresoras que no son dispositivos simples.
Piense en una impresora conectada de alg�n modo tortuoso a nuestra red
... ---ag�rrese: est� enchufada a un ordenador con el que s�lo
podemos comunicarnos mediante correo electr�nico---
Para imprimir a trav�s de lpr, el campo :lp: deber�a ser redirigido a
un dispositivo nulo,
mknod /dev/null1 c 1 3
(no a /dev/null, pues lpd lo usa en exclusiva). El filtro de entrada (
:if:, recuerde) debe expl�citamente codificar y enviar como correo al
ordenador remoto su salida.
Se rumorea que alguien consigui� con algo similar con Novell NetWare y
el agente de correo Charon; tambi�n hay quien cree en los Reyes Magos.
4.7. Trucos y problemas
4.7.1. lpr -i o como modificar la impresi�n a nuestro antojo.
La opci�n -i env�a argumentos al filtro de impresi�n. Ante todo,
necesitamos un filtro instalado en printcap para que la opci�n filtro.
Si quisiera un filtro que permitiera configurar su impresora sobre la
marcha, podr�amos utilizar un filtro como este:
#!/bin/sh
# Mi programa de configuracion se llama confimpre.
exec /usr/lib/confimpre $*
que desplace el margen izquierdo, y pasar como argumento el margen
deseado.
#!/usr/bin/perl
# confimpre: Desplaza el margen izquierdo en un texto ascii
# Usamos perl porque convertir numeros a caracteres
# es un campo de minas en programacion shell
for ( $i=0 ; !($_ = $ARGV[$i]) || !/^-i([0-9])+/;
$i++) {}
print pack( "cAc" , 27 , "l" , $1) ;
while (<STDIN>) { print; }
4.7.2. daemons "
Un proceso lpd corre continuamente, y se desdobla en hijos para
manipular cada impresora en tanto se necesita. La salud del proceso
principal no se manifiesta expl�citamente con 'lpc'; basta con la
ausencia de errores. El comando 'lpc stat' mostrar� de manera normal
el mensaje "no daemon present" para cada cola actualmente inactiva.
Si la impresi�n se desactiva, o la cola se vac�a, 'lpq' es bastante
m�s escandaloso, gritando "Warning: no daemon present", aunque, de
hecho, no hay condici�n de error. Si el demonio est� ausente cuando
hay entradas en la cola, y no ha sido expl�citamente detenido,
probablemente se debe a un fallo en alg�n filtro. F�jelo y reinicie
con "lpc up <cola>.
De vez en cuando, al desactivar una impresora, 'lpc' alucina, e
intenta matar demonios inexistentes, emitiendo un surtido de
irritantes e inofensivos mensajes de error. Esta "caracter�stica" es
muy rara en versiones posteriores a lpd-590p2.
4.7.3. Impresi�n sobre red (notas adicionales)
Dado que la m�quina que alberga la impresora f�sica debe saber quien
se conecta, deberemos dar de alta al resto de los ordenadores en los
ficheros /etc/hosts.equiv y /etc/hosts.lpd, con sus nombres can�nicos,
o direcciones IP. Si no est� seguro del nombre completo de una
m�quina, puede incluir todos sus alias conocidos.
Por motivos de seguridad, es preferible que las m�quinas que s�lo
deban tener acceso a la impresora queden restringidas a
/etc/hosts.lpd.
Si el servidor de impresi�n no ejecuta un sistema de impresi�n tipo
BSD ( UnixWare, HP-UX versi�n 10 ,...), deber�a ser posible trabajar
con �l, teniendo en cuenta que los ficheros de autorizaci�n pueden
variar notablemente, cambiando en cada sistema.
Si a�n no puede imprimir sobre un sistema distinto, queda un as en la
manga: simplemente use una orden remota, tal que rsh, rexec ...
# rsh rabano.huerta.net "lp -dlp" < fichero
permitir� imprimir sobre un SYSV, desde nuestra pera.huerta.net.
4.8. Los filtros de impresi�n
Los filtros en UNIX, son meramente programas (y como tales deben tener
permisos de ejecuci�n) que leen la entrada est�ndar y escriben sobre
la salida est�ndar, independientemente de su complejidad.
Los filtros de lpd lo son en el sentido que leen STDIN y escriben en
STDOUT; su peculiaridad estriba en que deben asumir que la entrada
est�ndar es un fichero de acceso aleatorio, sobre el que se pueden
realizar operaciones con lseek().
Un filtro que interpreta PostScript nos servir� de ejemplo:
#!/bin/sh
/usr/bin/gs -q -dSAFER -dNOPAUSE -r?? -sDevice=? -sOutputFile=- - < /dev/null
La primera l�nea invoca al int�rprete de comandos que lo interpretar�.
Podemos usar csh, bash, perl, tcl, etc...; va por gustos.
En la segunda l�nea usamos gs como filtro, indicando que la entrada es
STDIN ( el gui�n del final ), y la salida, STDOUT (-sOutputFile=-).
Lea la p�gina de manual de 'gs' para m�s detalles.
Es buena pr�ctica guardar los filtros de entrada en el directorio
tamp�n de la impresora en la que se usan (o en /var/spool/lpd/ ),
aunque las buenas maneras recomienden camas separadas para datos y
programas.
M�s dif�cil a�n:
#!/bin/sh
/usr/tex/bin/dvips -f | /usr/bin/gs [...] -sOutputFile=- -
Como se puede ver, este filtro procesar� un fichero texto de formato
TEX o LATEX, obteniendo un fichero .dvi, que es transformado en
PostScript, y reprocesado con ghostscript para imprimirlo en una
impresora normal.
Ojo: Si usa impresi�n remota con lpr, el filtro deber� encontrarse en
la m�quina remota; LPRng obvia este inconveniente.
4.8.1. Los filtros de salida
Son como el goto en 'C', se pueden usar, pero realmente, es dif�cil
encontrar aplicaciones para ellos. Dado que cualquier comando de
iniciaci�n de la impresora es ignorado, si tenemos un trabajo rodando
que cambia algo (el tipo de letra, por ejemplo), el nuevo trabajo
probablemente acabar� mal impreso. No los use.
4.8.2. Depuraci�n de filtros
Es absolutamente trivial: mifiltro <fichero >/dev/lp1 (como root).
Comprobaremos de inmediato si de verdad funciona.
Un truco muy �til para los filtros con argumentos en l�nea de comandos
consiste en incluir la l�nea
echo $* >> /tmp/filter-log
cerca del principio del gui�n. Recuerde incluir en la primera l�nea
que son ejecutables por todo el mundo.
4.8.3. Filtros M�gicos
Tienen de especial estos programas que son capaces de identificar la
familia de los datos a imprimir a partir de patrones caracter�sticos
de datos en situaciones determinadas. Son generalmente guiones Shell,
Perl, programas en C ...; el programa identifica la fuente de datos, y
llama a un filtro ordinario que lo procesa de modo adecuado. Con un
filtro m�gico adecuado y tres filtros no m�gicos podemos imprimir
cosas como esta:
# lpr -d fich1.dvi fich2.dvi.Z fich3.ps fich4.tex.gz
Un buen sitio para encontrar filtros m�gicos como el del ejemplo
anterior es:
ftp://tsx-11.mit.edu/pub/linux/sources/usr.bin/magic-filter-??.tar.gz.
Como podr� suponer, nunca se deber�an usar como filtros de salida.
Un ejemplo: el siguiente filtro m�gico identifica un fichero fuente ps
o texto, y lo procesa de acuerdo a su clase:
#!/bin/sh
printf "<Filtro magico para imprimir texto y ps.>"
read first_line
first_two_chars=`expr $first_line : '\(..\)'`
if [ "$first_two_chars" = "%!" ] ; then # Documento PostScript.
/usr/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=??? -sOutputFile=- - < /dev/null
else
# Texto llano - Si hace falta, podemos incluir aqui la
# correccion del efecto escalera
echo -n $first_line
cat
printf "\014"
fi
Para desaz�n de muchos, habr� ya notado que un script ejecutado por
alguien distinto al propietario puede ser una brecha de seguridad.
Este no es el caso de los filtros de lpd, ya que el entorno de los
guiones no est� al alcance de potenciales piratas.
4.8.4. Los usuarios de HP estamos de suerte
Hasta donde hemos podido averiguar, HP no tiene ning�n programa que
permita configurar sobre la marcha sus impresoras (�� ni siquiera para
sus propios sistemas UNIX!!), salvo que use MS-Windows, o *DOS; por lo
que s�lo nos queda, bien usar DOSEMU, o salir a DOS, configurar la
impresora, y volver a Linux.
Existe un hermoso programa llamado hpmodeset (-- Nota del Traductor:
hpset, localizable en cualquier mirror de Sunsite, en , escrito en
Eiffel, que hace el trabajo por nosotros, muy f�cil de usar. Su autor
es Glenn Maughan (
[email protected]); se puede conseguir
en
ftp://hornet.sd.monash.edu.au/pub/hpmodeset/v2.0.
Permite fijar economode, definici�n, tipo de papel, etc... en ficheros
PCL (el lenguaje de las impresoras HP) y ps. No es tan espectacular
como el programa de windows, pero funciona muy bien, y es susceptible
de ser utilizado como filtro de impresi�n.
5. �C�MO SE IMPRIME ... ?
Ya sabemos con qu� imprimimos bajo Linux. Ahora haremos una visita a
los programas m�s normales para generar el texto a imprimir usualmente
disponibles. Advierta que la mayor parte de los programas de impresi�n
bajo otros UNIX pueden ser muy f�cilmente adaptados a Linux.
5.1. Texto Llano
Bajo Linux, (como cualquier otro U*X), lo m�s f�cil es imprimir texto
llano. Cualquier editor est�ndar de UNIX (vi, emacs), o alguno m�s
sofisticado (nedit, jed, .. ) le producir�n tantas arrobas de letras
como desee.
Adem�s, la mayor parte de los programas que a continuaci�n se
describen son capaces de generar documentos en texto llano, con las
�rdenes adecuadas.
5.1.1. pr
La mayor�a de los ficheros de texto llano en U*X tienen tendencia a
ser un mar de caracteres, sin saltos de p�gina ni nada que permita un
documento m�nimamente presentable.
pr surgi� para obviar este inconveniente. Procesando el documento a
trav�s de pr, se le a�aden cabeceras y/o pies, n�meros de p�gina,
m�rgenes superior e inferior... Como cualquier otra utilidad UNIX, pr
tiene dos o tres millones de opciones, debidamente rese�adas en la
p�gina del manual.
5.2. PostScript
Si no tiene que imprimir texto llano, es muy probable que tenga que
imprimir PostScript. Si su impresora lo interpreta, sus problemas
terminan aqu�; si est� en el caso contrario, situaci�n normal para
casi todos, la cosa se complica un poco, pues necesitar� un programa
que lea PS y lo traduzca al lenguaje de su impresora.
5.2.1. Ghostscript
El modo normal de interpretar ps bajo Linux es usar ghostscript, que ,
como casi todas la utilidades, procede del proyecto GNU. Herramienta
vers�til donde las haya, gs traduce PostScript a formato X Window,
impresoras IBM, Epson, HP, Canon ..., fax, y casi para cualquier
dispositivo que se le ocurra. Los dispositivos soportados en cada
versi�n de ghostscript est�n debidamente relacionados en la
documentaci�n del programa; puede obtenerse una relaci�n con la orden
'gs -help'.
gs se ha convertido en utilidad est�ndar en la mayor�a de las
distribuciones de Linux, que la incluyen completa. Advierta que los
ejecutables binarios pueden necesitar 'libX.so.???' tal como vienen en
el controlador de pantalla X Window.
La distribuci�n "oficial" en forma de ficheros fuente, que deben ser
compilados en su sistema puede encontrarse en:
ftp://prep.ai.mit.edu/pub/gnu/ghostscript-*.tar.gz
ftp://prep.ai.mit.edu/pub/gnu/ghostscript-fonts-*.tar.gz
La instalaci�n m�nima de los binarios de gs y algunos otros programas
necesarios para imprimir la documentaci�n de Linux est� disponible en
ftp://sunsite.unc.edu/pub/Linux/apps/tex/texmin/texmin-*.tar.z
Esta distribuci�n no contiene ning�n tipo de letra PostScript (ni las
necesitar� para imprimir ficheros .dvi).
La documentaci�n principal de ghostscript se encuentra en el fichero
use.doc, en el directorio de fuentes, o en /usr/lib/ghostscript/doc/
si no tiene los fuentes.
Para imprimir ps determine primero el nombre de su dispositivo con la
orden 'gs -help', que lista los dispositivos instalados. Si el suyo no
est� en la lista, deber� recompilar gs (No se asuste, siga las
instrucciones que figuran en make.doc. Necesitar� libres 5 o 6 Mb de
espacio en disco). Con la orden:
# gs -dNOPAUSE - sDEVICE=???? -sOutputFile=/dev/???? fichero.ps
el documento aparecer� (eso esperamos) en su impresora sin problemas.
Como podr� imaginar, a mayor versi�n, m�s dispositivos soportados. En
la documentaci�n incorporada se describe el procedimiento para
desarrollar nuevos dispositivos si fuera necesario.
gs puede imprimir en la mayor�a de las resoluciones soportadas por su
impresora; '-r300' '-r150', '-r360x180' son ejemplos de las opciones
para su control. Las impresoras matriciales necesitan que se fije esta
opci�n, al no soportar normalmente la resoluci�n por defecto de
300x300.
5.3. Mi impresora s�lo trabaja con PostScript
Si su impresora s�lo trabaja con PostScript, o quiere ahorrarse andar
configurando el dispositivo cada vez que tiene que cambiar el tipo de
documento a imprimir, hay toda una familia de programas que
transforman el texto llano a PostScript.
5.3.1. mpage
Transforma texto llano a PostScript y/o imprime m�s de una p�gina en
cada hoja de papel a partir de PostScript o texto. Puede encontrarlo
en
ftp://wuarchive.wustl.edu/pub/mirrors/unix-c/PostScript/mpage-tar-z
el sufijo -z equivale a .Z (compress). La orden
man -t <orden> | mpage
enviar� una copia de la p�gina en formato PostScript a lpr.
5.3.2. a2ps, enscript, nenscript
A partir de un texto ascii llano, a2ps produce una p�gina debidamente
formateada, con cabeceras, pies, n�meros de p�gina ... Se encuentra en
el mismo lugar que mpage.
enscript y nenscript hacen lo mismo que a2ps. Puede encontrar
nenscript en:
ftp://sunsite.unc.edu/pub/Linux/system/Printing/nenscript* (-- Nota
del Traductor:
los caracteres extendidos; por ejemplo: a2ps (la versi�n que tengo, al
menos) genera un fichero ps que no tiene acentos, e�es .., al no
definir una tabla tipogr�fica para ellos. En cambio, nenscript si lo
hace. --)
5.3.3. gslp
Incluida en la distribuci�n de ghostscript, gslp transforma un fichero
texto a PostScript. �selo con la orden:
# gs -q -sDEVICE=???? -dNOPAUSE -- gslp.ps fich.text
(el programa es gslp.ps, escrito en PostScript, que, en muchos
aspectos, es un lenguaje de programaci�n, m�s que un conjunto de
�rdenes de impresi�n). Hay un ejecutable en la distribuci�n que evita
dar estos rodeos.
5.3.4. Utilidades para PostScript
Existen cientos de peque�os programas que permiten modificar ficheros
ps. Puede encontrarlos en
�
ftp://achilles.doc.ic.ac.uk/tex/inter/psutils/
�
ftp://ftp.cs.psu.edu/pub/src/psutil.tar.gz
�
ftp://ftp.uu.uunet
�
ftp://wuarchive.wustl.edu
5.4. TeX, LaTeX
Si hay algo cierto en el mundo de UNIX, especialmente a nivel
acad�mico, es que antes o despu�s uno se acaba topando con �l. TeX es
un sistema de formateado de textos (-- Nota del revisor:
Procesador de Documentos--) . Funciona de modo an�logo a un
compilador: El c�digo fuente corre a trav�s del programa tex, y
obtenemos un fichero .dvi, independiente del dispositivo, que
normalmente debe ser procesado de nuevo para obtener un documento
impreso. La alt�sima calidad del producto obtenido justifica la
complejidad del proceso.
El trabajo con TeX, no obstante, se ve gratamente suavizado mediante
el uso de procesadores de texto, como LyX, con el que ha sido
reelaborado este documento.
Remitimos al lector al libro "LaTeX, a document preparation system" de
Leslie Lamport (ed. Addison Wesley) 2� edici�n, que analiza en detalle
la versi�n m�s popular de este extraordinario sistema de tratamiento
de textos.
5.4.1. dvips
Convierte el fichero dvi generado a partir de un documento TeX en un
fichero PostScript, que puede imprimir a trav�s de gs, o directamente
en la m�quina adecuada. La mayor�a de las distribuciones de Linux
incluyen este paquete.
La orden
dvips -f1 fich.dvi | lpr
es t�pica. dvips responde tanto a los argumentos de la l�nea de
comandos como al fichero de configuraci�n "config.ps", donde puede
organizar las cosas para que la salida vaya directamente a la
impresora, por ejemplo. As�, bastar� escribir dvips fichero.dvi para
obtener el documento final.
dvips tiene unas cuantas opciones interesantes; por ejemplo dvips -r1
fich.dvi imprimir� el documento en orden inverso. Los propietarios de
impresoras HP apreciar�n esta caracter�stica.
5.4.2. eps, dvilj, dvi500
Transforman los ficheros dvi en los lenguajes de impresoras Epson y HP
LaserJet y DeskJet respectivamente. Suelen estar incluidos en la mayor
parte de las distribuciones, y, por supuesto, en
ftp://sunsite.unc.edu
5.5. texinfo
Es el formato nativo del proyecto GNU. emacs puede ser forzado a
producir un fichero de informaci�n desde TeXinfo, y TeX producir� un
excelente resultado a partir de este mismo fichero. Realmente, el
documento est� en formato TeX, y necesita que el fichero de macros
texinfo.tex est� instalado en su sistema. Simplemente ejecute un
fichero dvi que podr� imprimir o visualizar a su placer.
Con emacs puede teclear adem�s 'M-x texinfo-format-buffer' para
convertir el fichero texinfo en un fichero info legible con emacs 'M-x
info', u otro visor de su elecci�n.
Hay otros programas que leen y formatean info desde un fichero
texinfo. Est�n disponibles en
ftp://prep.ai.mit.edu/pub/gnu/
5.6. *roff ; p�ginas man
Si hay un generador de documentos virtualmente universal es troff, y
sus primos cercanos, debido a que las p�ginas de manual se escriben
para ellos. Las �rdenes de formato de documentos ser�n
�sorprendentemente? familiares para los (no se si a�n queda alguno
vivo) forofos de las versiones m�s populares de Wordstar.
La orden para imprimir las p�ginas de manual es
man -t <comando> | lpr
groff traduce la p�gina a PostScript, que se procesa sin mayores
problemas, como ya sabemos. Obtendremos as� una p�gina impresa muy
aparente. Esto, sin embargo, depende mucho del programa 'man' que
viene con su sistema. Si el suyo no lo permite, consiga la versi�n
escrita en perl, en:
ftp://sunsite.unc.edu/pub/Linux/system/Manual-
pagers/.
Est� �ntegramente escrito en perl, y es por tanto muy personalizable.
Otro camino consiste en encontrar el fichero fuente de nroff de la
p�gina en los directorios de man, e imprimirlo con la orden:
groff -fichman -Ttipo orden.1 | lpr
donde tipo puede ser 'ascii', 'dvi' 'ps' 'X100',
5.7. Adobe Acrobat. Ficheros PDF
Est�ndar emergente donde los haya, los pap�s de PostScript han
desarrollado un formato de documentaci�n que permite (al menos eso
venden) absoluta independencia del sistema operativo. Un fichero PDF
se imprimir� igual de bien en un ordenador con MS-Windows, un Mac*, un
CojoSuperOrdenador Cray, o un PC con Linux.
Los documentos PDF se traducen justo a la hora de imprimirlos al
formato que cada sistema operativo requiera; en UNIX, a PostScript.
Puede obtenerse una copia del lector de Adobe en
http://www.adobe.com.
Si prefiere algo menos "comercial", Xpdf ser� de su agrado. La �ltima
versi�n est� en
http://www.contrib.andrew.cmu.edu/usr/dn0o/xpdf/xpdf.html
5.8. Tipos
(Esta secci�n contiene informaci�n no espec�fica a los dispositivos).
La informaci�n pertinente al dispositivo X11 de gs (y ghostview) se
incluye en el apartado de visualizaci�n.
Todas las versiones de gs vienen provistas de un surtido de tipos de
dominio p�blico, muchas de ellas generadas a partir de mapas de bit,
con baja calidad. Sin embargo, gs puede usar cualquier tipo PostScript
clase 1 o 3 que tenga a mano. Por ejemplo, Adobe Type Manager (que no
sea de Mac) incluye tipos utilizables. Sit�elos (normalmente *.pc?)
en lib/ghostscript/fonts/, y a�ada al fichero
[...]/ghostscript/Fontmap' l�neas del estilo
/Courier (com_______.pfb) ;
En el servidor de correo de impresi�n puede encontrar el fichero
fontmap.atm, que contiene un fontmap de los tipos normalmente
incluidos en Adobe Type Manager.
Puede encontrar tipos Adobe Type 1 en:
ftp://ftp.cica.indiana.edu/pub/pc/win3/fonts
ftp://archive.umich.edu/msdos/mswindows/fonts
En el fichero comp.fonts FAQ, en
ftp://rftm.mit.edu, puede encontrar
informaci�n �til acerca de tipos de impresi�n.
La conversi�n entre familias de tipos es delicada. gs incluye
herramientas para generar tipos escalables a partir de mapas de bits
(cuanto m�s grandes, mejor).
groff tiene tambi�n herramientas para usar tipos Tfm/mf (TeX) y pfb
(type 1) en documentos *roff. X11R5 incluye herramientas procedentes
de IBM para presentar tipos type 1, con sus correspondientes p�ginas
de manual. Eche un ojo tambi�n al logical fontutils en
ftp://prep.ai.mit.edu/pub/gnu/.
5.9. Documentos para fax.
Aunque no parezca el lugar m�s adecuado para su rese�a, �qu� hacemos
al enviar un fax m�s que imprimir un fichero en un terminal remoto?.
Mediante fax, puede transmitir documentos originalmente en PostScript,
dvi, texto llano....
Para enviar un fax, el documento original debe ser transformado en una
imagen TIFF del grupo III que ser� transmitida por el fax-m�dem. Todos
los programas mencionados contienen utilidades que permiten
transformar las distintas clases de documentos al formato necesario.
Adem�s, gs (tambi�n aqu�) tiene dispositivos adecuados para ello
(-sDEVICE=tiffg3).
Tenga en cuenta que hay dos juegos de �rdenes que un fax puede
soportar: Clase 1 y Clase 2. En el primer caso, hoy ya casi extintos,
gran parte de la gesti�n de transmisi�n de datos debe hacerla el
ordenador anfitri�n v�a el programa de fax. Esto hace que en
condiciones de sincronizaci�n cr�tica, el control se vuelve casi
imposible. Los fax de clase 2 son m�s caros, pero mucho menos
propensos a dar guerra. No confunda la 'clase' y el 'grupo'. Deber�
tener, por supuesto, un fax-m�dem de grupo III.
5.9.1. FLEXFAX
FlexFax est� escrito en C++ (necesita instalar g++ para compilarlo), y
soporta fax de clase 1 y 2. Utiliza ghostview (o cualquier otro visor
de ps) . Puede ejecutarse en lugar de getty, y decide, seg�n el tipo
de llamada, si activar el fax, o presentar un login. Permite la
emisi�n de faxes a trav�s de una red, y tiene un zurill�n de
utilidades. Se configura v�a 'configure', y para un ordenador aislado
es un tanto mastod�ntico. La versi�n actual (4.0 beta 018, seg�n
escribo ) puede encontrarse en:
http://www.vix.com/hylafax/
5.9.2. mgetty+sendfax
mgetty+sendfax controla s�lo fax de clase 2, y puede tambi�n actuar
como contestador autom�tico, si el m�dem lo soporta. Al igual que
FlexFax, se instala en lugar de getty, controlando qu� entra y sale.
Muy adecuado si no necesitas trabajar sobre red. Un excelente conjunto
de programas disponible en
ftp://sunsite.unc.edu/pub/Linux/system/Serial/mgetty+sendfax*.tar.gz
ftp://tsx-11.mit.edu/pub/Linux/sources/sbin/mgetty+sendfax*
ftp://ftp.leo.org/pub/comp/networking/communication/modem/mgetty/
5.9.3. EFAX
Controla fax de clase 1 y 2; no discrimina entre una conexi�n de datos
y un fax, tiene su fuerte en su facilidad de uso. Necesita el paquete
NetPBM (ftp.x.org). Utiliza xv para ver los fax recibidos. Lo
encontrar� en:
ftp://sunsite.unc.edu/pub/Linux/apps/comm/efax*
6. Visualizaci�n
Hubo un tiempo en que a alguien se le ocurri� el concepto de la
"oficina sin papeles"; no har�a falta manejar papel impreso durante el
tr�nsito de documentos. Qu� falta de vista. �C�mo podr�amos si no
fardar de impresora ?. Nos ha quedado de todo aquello una serie de
programas que nos facilitan ver el resultado final de un trabajo sin
su materializaci�n.
6.1. Con X-Window instalado
6.1.1. ghostview
El complemento ideal de 'gs', visualiza documentos PostScript en un
sistema X Window. Permite elegir p�ginas individuales, o grupos de
ellas para su posterior impresi�n. La distribuci�n oficial est� en
ftp://prep.ai.mit.edu/pub/gnu/ghostview-*.tar.gz
F�cil de construir, ghostview necesita gs para ser ejecutado. Las
�ltimas versiones utilizan las fuentes est�ndar de X Window,
facilitando la legibilidad en las condiciones de baja resoluci�n de
los monitores. La verdad es que funciona muy bien; de hecho, muchos
piensan que mejor que el paquete pageview de Sun. Si lo desea, puede
utilizar fuentes distintas a las del sistema ( por ejemplo, Type 1 ),
simplemente situando la orden
ghostscript.useExternalFonts:false
en su fichero .Xdefaults.
Puede obtenerse m�s informaci�n de la documentaci�n que acompa�a al
programa, y en la correspondiente p�gina de manual.
6.1.2. gspreview
Tenemos aqu� otro interfaz para ghostscript. M�s sencillo que
ghostview, carece del mill�n de opciones de �ste, pero trabaja
razonablemente bien. Puede encontrarlo en
ftp.x.org/contrib/gspreview*
6.1.3. xdvi y xtex
El equivalente para documentos .dvi de ghostview, tiene una curiosa y
�til "lupa" incorporada. Extremadamente legible, viene incluido con la
mayor�a de las distribuciones de TeX. Para ver un fichero basta con
ftp://ftp.x.org/contrib.
xtex tiene La misma utilidad que xdvi. Disponible en
ftp://ftp.x.org/contrib/xtex-*.tar.z
6.2. �Y si no tengo instalado X Window ?
Instalar X puede ser una mala opci�n si su equipo no dispone de
memoria suficiente ( 8 Mb recomendados para ello ). No se preocupe,
tambi�n hay soluci�n.
6.2.1. Ghostscript, de nuevo
Ghostscript incluye en su distribuci�n dispositivos para control del
soporte f�sico de los PC; no es una buena soluci�n para UN*X; Las
�ltimas distribuciones, sin embargo, incluyen soporte para librer�as
VGA de Linux (svgalib). El dispositivo pertinente se llama 'Linux'; la
orden
gs -sDEVICE=linux fichero.ps
mostrar� el documento en pantalla. La variable de entorno GSVGAMODE,
muy importante, fija el modo de v�deo deseado, seg�n los valores que
aparecen en el fichero de vgalib vga.h.
Si no lo tiene en su distribuci�n, puede obtener el parche en el
servidor de correo de impresi�n, o en
ftp://ws105.zfn.uni-bremen.de/pub/gs261-linuxdriver.sh
ftp://ws105.zfn.uni-bremen.de/pub/gs261-svgalib.tar.gz
ftp://ftp.cdrom.com/pub/linux/misc
y por supuesto, en
ftp://sunsite.unc.edu.
(Pruebe mejor en los diversos duplicados de este lugar. Sunsite est�
normalmente saturado (-- Para los residentes en Espa�a,
ftp://sunsite.rediris.es es un mirror inmejorable.--) ).
6.2.2. dvgt
Permite la visualizaci�n de ficheros .dvi bajo la librer�a svgalib, o
en diferentes clases de terminales gr�ficas, incluyendo vt, tek, o un
PC corriendo MS-Kermit. Disponible en sunsite.
7. Copyright
Salvo otra disposici�n, los documentos COMO de Linux est�n registrados
por sus autores respectivos. Los documentos COMO de Linux pueden ser
reproducidos y distribuidos en todo o en parte, en cualquier medio
f�sico o electr�nico. Las traducciones y similares est�n permitidos
sin necesidad de permiso expreso.
La redistribuci�n comercial est� permitida y recomendada; sin embargo
a los autores les gustar�a tener conocimiento de tales distribuciones.
Resumiendo: Nos gustar�a promover la distribuci�n de esta informaci�n
a trav�s del mayor n�mero de canales posible. Sin embargo, nos
gustar�a retener los derechos de autor de los documentos COMO, y ser
informados de cualquier plan para su redistribuci�n.
Si tiene dudas, contacte con Greg Hankins (-- En cuanto a coordinaci�n
de traducciones al castellano, ver secci�n ``''--) el coordinador de
los COMO de Linux, en
[email protected] .
8. Anexo: El INSFLUG
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,
[email protected].