- Introduccion
- Impresión en
Linux - Impresión
remota - El area de
Spool - Directorios
temporales - Configuracion de impresoras y
printcap - El demonio de la
impresion - Formatos de
texto - Filtros
El sistema de
impresión de Linux (el
sistema lp) es
una adaptación del código
escrito por los Regents de la Universidad de
California para la versión Berkeley Software Distribution (BSD)
del sistema operativo
UNIX.
IMPRESIÓN EN LINUX Impresión en Linux
La forma más simple de imprimir en Linux es enviar
el fichero que se va a imprimir directamente al dispositivo de
impresión.
Para esto podemos usar el comando cat.
Como usuario root, uno puede hacer lo
siguiente:
cat tesis.txt >
/dev/lp
otro ejemplo podría ser ls >
/dev/lp1
Lp o lp1 son enlaces simbólicos a las impresoras
existentes en la máquina. Cuando se instala una impresora se
debe poner el nombre completo de la misma y se asigna un alias o
nombre corto para la misma lp1, lp2, lp3, etc.
Para el propósito de la seguridad,
sólo el usuario root y los usuarios de su mismo grupo como el
demonio de impresión son capaces de escribir directamente
a la impresora. Es
por esto por lo que se tienen que usar comandos como
lpr, lprm, etc para acceder a la impresora.
Este método de
impresión tiene el problema de no utilizar la multitarea
de linux ya que el proceso
duraría el tiempo que la
impresora necesite para despachar el trabajo a
imprimir, incluyendo otro tipo de problemas ,
como por ejemplo que la impresora se encuentre apagada, trancada
o sin papel.
Lo que saldría por la impresora en el primer caso
sería el documento tesis.txt, en
el segundo caso se ejecuta el comando ls, listando por impresora
los ficheros que se encuentren en el directorio
actual.
Cualquier máquina que intente imprimir en un
sistema determinado, debe estar registrada en la maquina que se
va a imprimir en cualquiera de los siguientes
ficheros:
- /etc/hosts.equiv
- /etc/hosts.lpd
Estos, 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.
Puede restringirse el uso tanto por nombre como por
grupos.
– Las siguientes son líneas que se deben agregar
al fichero /etc/printcap.
:rg: Con esta línea se especifican los grupos
autorizados con uno o varios campos.
Ej. :rg=Grupo:
Poniendo esta línea en el printcap solo podrán
acceder a la impresora aquellos usuarios asignados al grupo que
se especifica en la línea, en este caso es
Grupo.
:rs: Con este campo, se puede también limitar el
acceso a aquellos usuarios con cuenta en su sistema.
El spool o cola de impresión es un
área de almacenamiento,
donde se guardan los datos a imprimir
en un archivo temporal
y se arranca un proceso en segundo plano (que es el demonio de
impresión o lpd) que es quen envía la información a la impresora
seleccionada.
Generalmente el directorio de spool se encuentra
en:
/usr /spool / lpd
o
/var /spool / impresora
La cola de Impresión permite que se puedan
imprimir varios ficheros a la vez, cuantos sean
necesarios.
Cada impresora tiene su cola de impresión esto
significa que se pueden estar mandando varios documentos a las
impresoras que
se tengan instaladas e incluso pueden haber varios documentos en
cada una de las colas.
Los documentos de una cola no se mezclan con los
documentos de la otra y existe un procesos o
demonios que se encargan de tratar individualmente cada
documento, esto lo veremos más detalladamente en la parte
de Proceso de Impresión).
Realmente, sólo hay un directorio importante que
es el spool.
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 o /usr
/spool / lpd (algunos materiales
hacen referencia a la primera y otros a la segunda) es el
directorio de spool 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..
s Temporales
Los directorios temporales deberían pertenecer a
root, grupo lp
El usuario y el grupo deben poder leer y
escribir, y el resto solo leer.
Cada directorio temporal debe contener como
mínimo estos cuatro ficheros: ".seq" , "errs" , "lock" y
"status".
– El fichero .seq contiene la secuencia de trabajos
enviados.
– El fichero status contiene el mensaje que devuelve
"lpc stat".
– El fichero lock impide al demonio lpd imprimir dos
trabajos al mismo tiempo en la
misma impresora.
– El fichero errs guarda un registro de los
errores de la impresora.
CONFIGURACION DE IMPRESORAS Y
PRINTCAP
Configuración de
Impresoras El /etc/printcap es simplemente un
archivo de
texto, que
guarda la configuración de las impresoras y que puede ser
modificado por el root o superusuario.
Su propietario es el administrador del
sistema y debe tener permisos de lectura y
escritura para
el mismo. Los permisos para todos los demás deben ser de
solo lectura, por
razones obvias.
Cada entrada de printcap describe una impresora, es
decir, cada entrada de printcap provee una denominación
lógica
para un dispositivo físico, y describe cómo deben
ser los datos enviados y
manejados por este dipositivo.
Por ejemplo, una entrada de printcap definirá
qué puerto vamos a usar, que spool, que 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.
Cada entrada de /etc/printcap se estructura con
una serie de campos, encabezados por una etiqueta, y limitados
por dos puntos, a excepción del primer campo, que describe
la impresora.
Campos del printcap:
– lp :
Apunta al puerto/dispositivo de
impresión.
Generalmente es /dev/lp.
Cuando configure una impresora remota, se debe poner
":lp=:" en /etc/printcap, indicando que no está asignada a
ningún dispositivo local..
– lf :
Guarda un registro de los
errores de la impresión.
– if :
Indica el nombre del filtro de impresión a
ejecutar.
– rm y rp :
Controlan el destino de la impresión
remota.
– sh y sf :
Son separadores.
Se usan cuando hay mucha gente usando la misma
impresora.
– mx :
Limita el tamaño del spool, 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.
Este campo es útil si se tienen programas que
accidentalmente pueden generar un volumen
desproporcionado de datos a imprimir (imágenes,
por ejemplo).
Ejemplo de entrada en /etc/printcap:
impresora|HP850C:
# Se pone la impresora con 2 alias.
:lp=/dev/lp1:
# lp es el dispositivo de impresión, acá
se está seteando como la primera impresora.
:sd=/var/spool/lpd/HP850C:
# Con esta línea especificamos el área de
spool para esta impresora.
COMANDOS
lpr :
Nos permite imprimir un fichero o conjunto de ficheros,
así como la salida de alguna orden.
Sintaxis de impresión de ficheros:
lpr fichero1
lpr fichero1 fichero2
fichero3
Como la salida de un comando:
comando | lpr
ls -l | lpr
El parámetro -P nos permite especifica a que
impresora va dirigido el trabajo de
impresión.
Sintaxis:
lpr -P nombre_impresora
fichero1
lpq :
Lo utilizamos para poder
gestionar el conjunto de tareas de impresión que se
encuentran en la cola de impresión.
El parámetro -P especifica que cola de
impresión queremos ver.
La información que visualiza el lpq es entre
otra el nombre del propietario del trabajo, un número de
trabajo que es secuencial, el nombre del fichero o del comando a
imprimir, el tamaño del fichero y el orden en el que se va
a imprimir.
lprm :
Este comando se utiliza para remover un trabajo de la
cola de impresión.
Se puede indicar específicamente el numero de
trabajo, o con el parámetro "–P" podemos cancelar
todos los trabajos destinados a una impresora
seleccionada.
Sintaxis de eliminación de ficheros:
lprm número de trabajo
Si el superusuario deseara eliminar todos los trabajos
pertenecientes a un usuario determinado, bastaría con
especificar el nombre del usuario en la línea de comandos.
Sintaxis de eliminación de todos los ficheros de
un usuario:
lprm -P impresora usuario
También existe con este commando, una forma de
eliminar todos los trabajos de la cola de impresión, esto
esta reservad solo para el administrador del
sistema.
Sintaxis:
lprm –
lpc :
Con lpc podemos comprobar el estado de
las impresoras, y controlar algunos aspectos de su
uso.
permite arrancar y parar la cola de impresión,
permite activar y desactivar impresoras, y reorganizar el orden
de los trabajos en cola.
1) lpc down impresora
2) lpc enable impresora
3) lpc topq 23
1.- Inhabilita la impresora "impresora".
2.- Habilita la impresora "impresora".
3.- Mueve el trabajo 23 al principio de la cola de
impresión.
Es un proceso en segundo plano, que analiza constante y
metódicamente los directorios de spool, buscando nuevos
datos a imprimir.
Cuando hay algún dato para imprimir, este demonio
realiza una copia de si mismo que toma los archivos
correspondientes y los manda a la impresora
seleccionada.
El demonio original se encarga de seguir chequeando la
cola en espera de nuevos trabajos para imprimir.
Vale decir que para cada trabajo se crea un demonio que
se ocupe únicamente de ese trabajo.
PROCESO DE LA IMPRESION
Vamos a presentar el proceso de impresión
mediante un ejemplo.
Suponemos que el usuario manda a imprimir el archivo
carta.txt, en la impresora cuyo nombre simbólico es
lp
Esto se puede hacer con el comando lpr, de
la siguiente manera:
lpr -Plp carta.txt
Las características de la impresora física son
especificadas por el administrador del sistema en el archivo
/etc/printcap.
El archivo carta.txt es
leído por el programa lpr, el
cual crea una copia en el directorio de spool de esta
impresora.
Esta copia es tomada como un Data File y el nombre de la
copia del archivo será algo parecido a
dfA123host.
En este momento, la copia del archivo carta.txt (data
file), se coloca en el directorio de spool, junto con otro
archivo llamado el archivo de control (control
file).
El archivo de control especifica los parámetros
de impresión para el programa que
imprime el archivo y su nombre será algo parecido a
cfA123host.
Una vez copiados los archivos de datos
y de control al directorio de spool, el proceso lpr manda
un mensaje IPC al demonio de impresión
(lpd).
Para ver el grafico seleccione la
opción "Descargar" del menú superior
El mensaje IPC notifica que hay un trabajo a
imprimir y también contiene el nombre de la impresora,
para que el demonio sepa en que directorio de spool debe buscar
los datos a imprimir.
El demonio, que ha estado por un
mensaje IPC, hace una copia de sí mismo.
Esta copia maneja la solicitud de impresión,
enviando los datos al dispositivo (impresora), mientras que el
lpd original espera por otro mensaje IPC que le indique que hay
otro trabajo para imprimir.
El proceso lpr está completo:
– Se copiaron los archivos en el directorio de
spool.
– Se creó un archivo de control para el programa
de impresión.
– Se notificó al demonio que hay trabajos para
imprimir.
– El proceso lpd (hijo) busca los archivos en el spool y
los envía a la impresora.
PostScript :
Unix generalmente opera en "terminales ASCII" y no en el
ambiente de
Ventanas.
El hecho de usar "terminales ASCII", limita
toda la escritura a un
sólo tipo de formato texto simple o ASCII), esto significa
documentos sin sangrías, encabezados, margenes o cualquier
tipo de formato.
Por lo tanto, antes de imprimir un documento de "texto
simple" este debe ser formateado para que la impresión
contenga el formato adecuado.
Para esto existen programas como
troff y TEX , que integran márgenes, diferentes tipos de
letra, encabezados, entre otras cosas al documento.
Lo anterior producía un problema para muchos
usuarios que no conocían el funcionamiento de troff o TEX
ya que no era posible observar el documento formateado antes de
su impresión, además en la "terminales ASCII" no
era posible observar este tipo de formato, previamente a la
impresión
Para solucionar estos problemas
surgieron los procesadores de
palabras que se conocen hoy en día.
Procesadores de Palabras WYSIWYG
Los procesadores de
Palabras que conocemos hoy en día, también
denomindos WYSIWYG ("What you see is what you get" que significa
lo que ves es lo que obtienes), surgieron para auxiliar a los
usuarios que necesitaban ver la presentación del documento
antes de enviarlo a impresión.
Pero surge un problema, "el formato", cada procesador de
palabras implementa diferentes conversiones.
A pesar de la ventaja de poder observar el documento de
una manera formateada con diferentes tipos de letra, el problema
de intercambiar documentación en estos procesadores de
palabras resulta problemático.
La Impresión
Al mandar imprimir un documento ya sea de "Word","WordPerfect","troff" o cual fuera el
formato visualizado en pantalla, aún ocurre otra
conversión.
Ya que ningún procesador de
palabras utiliza las mismas conversiones, este documento debe de
ser convertido en un lenguaje que
pueda ser interpretado por la impresora, generalmente es:
Postscript o PCL de IBM.
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 'tex fichero' dos veces (con el fin
de generar índices), y obtendrá un fichero dvi que
podrá imprimir o visualizar.
Adobe Acrobat. Ficheros PDF :
PDF es un formato de documentación que permite absoluta independencia
del sistema
operativo.
Un fichero PDF se imprimirá igual de bien en un
ordenador con MS-Windows, un
Mac 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, se traducen
a PostScript.
Los filtros son programas que
reciben datos por la entrada estándar, y los devuelven
procesados por la salida estándar.
El trabajo del filtro consta de procesar los datos a
imprimir.
Un filtro puede incluso no enviar ningún dato al
puerto.
Un ejemplo de filtro 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.
Además, podemos definir distintos modos de
procesar datos para una misma impresora. Por ejemplo, una misma
impresora puede manejar datos en formatos PostScript, HPGL y PCL,
dependiendo de la secuencia de órdenes que le enviamos al
comienzo de cada trabajo.
GHOSTSCRIPT
PostScript es el formato estándar de los ficheros
imprimibles en UNIX.
El problema radica en que no todos tienen impresora que
Maneje PostScript.
GhostScript, creado por Peter Deutsch, fundador de
Aladdin Enterprises es el interprete por excelencia de documentos
en formato PostScript y también PDF.
GhostScript permite presentar datos PS y PDF en la
pantalla y además traducirlos de manera que puedan ser
impresos en una impresora con capacidad gráfica, mediante
el uso del controlador de dicha impresora.
Ghostscript, como la mayoría de las utilidades,
procede del proyecto
GNU.
Tiene la finalidad de traducir PostScript a formato X
Window, el cual es el que usan las impresoras como IBM, Epson,
HP, Canon, fax y casi
para cualquier dispositivo que exista.
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'.
Ghostscript se ha convertido en utilidad
estándar en la mayoría de las distribuciones de
Linux, que la incluyen completa.
Para imprimir ps lo primero que hay que hacer es
determinar el nombre del dispositivo por donde quiero imprimir
con la orden 'gs -help', que lista los dispositivos
instalados.
# gs -dNOPAUSE – sDEVICE=? -sOutputFile=/dev/lp1
fichero.ps
gs puede imprimir en la mayoría de las
resoluciones soportadas por el dispositivo: '-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 300×300.
OTROS FILTROS
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.
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
enscript y nenscript hacen lo mismo que a2ps.
TeX, LaTeX :
TeX es un sistema de formateado de textos.
Aunque más bien se usa como un 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 calidad del
producto
obtenido es muy buena.
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.
Sintaxis:
dvips -f1 fich.dvi | lpr
Banderas:
dvips -r1 fich.dvi
Esta línea imprime el documento en orden
inverso.
Es una opción muy útil para los
propietarios de impresoras HP ya que de este modo las hojas
saldrán ya ordenadas.
eps, dvilj, dvi500 :
Transforman los ficheros dvi en los lenguajes de
impresoras Epson y HP LaserJet y DeskJet
respectivamente.
*roff; (es para crear páginas man)
:
Troff es el generador de documentos virtualmente
universal, esto es debido a que las páginas de manual se
escriben para ellos.
Sintaxis:
man -t <comando> | lpr
Groff traduce la página a PostScript, que se
procesa sin mayores problemas.
FILTROS MAGICOS
Existen otros tipos de filtros que son capaces de
reconocer el tipo de fichero que queremos imprimir y realizar las
operaciones
necesarias para que obtengamos una salida correcta, a estos
programas los denominamos Filtros Mágicos.
Un filtro mágico analiza la entrada que recibe, y
de acuerdo con los datos que se le envíen, manda estos
datos a otros filtros secundarios, que son los que detallamos en
la sección anterior.
Así por ejemplo cuando le llega un trabajo que
está en PostScript lo envía al GhostScript y cuando
le llega un formato de dibujo como
BMP, lo envía al filtro correspondiente.
Los filtros mágicos más conocidos son
MagicFilter, apsfilter y los filtros de
impresión del Redhat.
MagicFilter :
El programa MagicfilterConfig se crea al instalar el
paquete Magicfilter y permite una comoda configuración de
la impresora, escribiendo el archivo etc/printcap a través
de respuestas a preguntas que nos hace
interactivamente.
El creador de este programa es Peter Anvin y el programa
puede descargarse de cualquier espejo de Sunsite.
Una vez instalado el programa permite que el sistema
reconozca e imprima Gráficos (Jpeg, Tiff, BMP, Gif, etc.),
ficheros PS, PDF, DVI, paginas de manual, Ficheros
ASCII con acentos y ñ e incluso cualquier fichero
comprimido con gzip.
ApsFilter :
Este programa fue desarrollado por Andreas Klemm, y hace
básicamente lo mismo que el MagicFilter, pero
además añade algunas opciones interesantes como por
ejemplo, permite imprimir ficheros comprimidos con gzip, compress
y freeze entre otros.
Además el ApsFilter ofrece las siguientes colas
de impresión para máquinas
locales:
– Lp :
Cola estándar para todos los formatos de
fichero.
– Lp-mono :
Se genera para impresoras de color, cuando se
quiere imprimir en blanco y negro
– Ascii :
Para imprimir ficheros tipo ascii.
– Raw :
Para imprimir ficheros que ya tienen un formato
específico de la impresora y por lo tanto no requieren
ningún tipo de compresión.
Filtros de Impresión de RedHat
:
Redhat 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).
Se incluye dentro de estos filtro 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 no requiere que el usuario tenga
muchos conocimientos del sistema.
El filtro de RedHat se parece más al MagicFilter
que al ApsFilter porque genera solo una cola de impresión
para una impresora única lp.
Horacio Rapalini – 113781
Nicolás Domínguez –
68344