diff options
author | J. Vicente Carrasco <carvay@FreeBSD.org> | 2008-11-22 21:01:35 +0000 |
---|---|---|
committer | J. Vicente Carrasco <carvay@FreeBSD.org> | 2008-11-22 21:01:35 +0000 |
commit | ba0c747d204bf22437149d4be037ea443afb0150 (patch) | |
tree | 9909b4cb7163f5ad24b76790c6cb4583308b5661 /es_ES.ISO8859-1/books/handbook | |
parent | ca1745d9e6c974d9ebd4eb5b20a8d932942bd990 (diff) | |
download | doc-ba0c747d204bf22437149d4be037ea443afb0150.tar.gz doc-ba0c747d204bf22437149d4be037ea443afb0150.zip |
- Update 'Sinopsis' and 'Introduction' sections.
- Other sections deleted. The translation will be
redone from scratch.
Notes
Notes:
svn path=/head/; revision=33275
Diffstat (limited to 'es_ES.ISO8859-1/books/handbook')
-rwxr-xr-x | es_ES.ISO8859-1/books/handbook/printing/chapter.sgml | 5088 |
1 files changed, 115 insertions, 4973 deletions
diff --git a/es_ES.ISO8859-1/books/handbook/printing/chapter.sgml b/es_ES.ISO8859-1/books/handbook/printing/chapter.sgml index 243a3ed58a..105b48591d 100755 --- a/es_ES.ISO8859-1/books/handbook/printing/chapter.sgml +++ b/es_ES.ISO8859-1/books/handbook/printing/chapter.sgml @@ -14,7 +14,7 @@ <author> <firstname>Sean</firstname> <surname>Kelly</surname> - <contrib>Aportado por </contrib> + <contrib>Escrito por </contrib> </author> <!-- 30 Sept 1995 --> </authorgroup> @@ -35,70 +35,71 @@ <indexterm><primary>Sistema de cola LPD</primary></indexterm> <indexterm><primary>imprimir</primary></indexterm> - <para>FreeBSD puede ser utilizado para imprimir en una gran variedad - de impresoras, desde las antiguas impresoras de matriz de punto, hasta - las más modernas impresoras laser, y todo lo que existe en - medio de estas, permitiendole crear impresiones de alta calidad, desde - cualquier aplicación que este utilizando.</para> + <para>&os; puede utilizarse para imprimir en una gran variedad + de impresoras, desde las antiguas impresoras de matriciales hasta + las más modernas impresoras laser y todo lo que existe entre + unas y otras, con lo que podrá imprimir con una calidad muy + alta desde cualquier aplicación.</para> - <para>FreeBSD también puede ser configurado para actuar como - servidor de impresión en una red; en esta modalidad, FreeBSD puede + <para>&os; puede usarse también como + servidor de impresión en red; &os; puede recibir peticiones de impresión de una gran cantidad de - computadoras, incluyendo computadoras corriendo FreeBSD, Windows y MacOS. - FreeBSD verifica que un trabajo sea impreso a la vez, y puede mantener - estadísticas sobre que usuario y maquina son los que más - imprimen, insertar una página de aviso (<quote>titulares</quote> - o <quote>páginas de encabezado</quote>), - antes de cada trabajo para verificar de quien es cada impresión, - y más.</para> + sistemas, bien sean &os;, &windows; y &macos;. + &os; se encarga de los trabajos se vayan imprimiendo uno tras + otro y puede mantener estadísticas sobre qué + usuarios y qué máquinas están imprimiendo + más, generar páginas de «encabezado» + para colocarlas antes de cada trabajo y distinguir así + de quién es la impresión, etc.</para> - <para>Al concluir el presente capítulo, usted sabrá:</para> + <para>Tras leer el presente capítulo sabrá usted:</para> <itemizedlist> <listitem> - <para>Como configurar la cola de impresión en FreeBSD.</para> + <para>Cómo configurar la cola de impresión en &os;.</para> </listitem> <listitem> - <para>Como instalar filtros de impresión, para manejar diferentes - trabajos especiales, incluyendo la conversión de documentos a - formatos aptos para la impresora.</para> + <para>Cómo instalar filtros de impresión para gestionar + diversos trabajos especiales como la conversión de documentos + a formatos aptos para su impresora.</para> </listitem> <listitem> - <para>Como habilitar encabezados, o titularess en sus impresiones.</para> + <para>Cómo habilitar encabezados en sus impresiones.</para> </listitem> <listitem> - <para>Como imprimir en impresoras conectadas a otras computadoras</para> + <para>Cómo imprimir en impresoras conectadas a otras máquinas.</para> </listitem> <listitem> - <para>Como imprimir en impresoras conectadas directamente a la red.</para> + <para>Cómo imprimir en impresoras conectadas directamente a la red.</para> </listitem> <listitem> - <para>Como controlar restricciones de impresión, incluyendo - limitantes en el tamaño de los trabajos de impresión, y - restringiendo la impresión a ciertos usuarios.</para> + <para>Cómo controlar restricciones de impresión, + como por ejemplo limitaciones del tamaño de trabajos o + evitar que ciertos usuarios puedan imprimir.</para> </listitem> <listitem> - <para>Como mantener estadísticas de impresión, y cuentas - para el uso de la impresora.</para> + <para>Cómo mantener estadísticas de impresión + y cuentas de usuario de impresión.</para> </listitem> <listitem> - <para>Como solucionar problemas de impresión comunes.</para> + <para>Cómo solucionar los problemas de impresión + más comunes.</para> </listitem> </itemizedlist> - <para>Antes de leer este capítulo, usted debería:</para> + <para>Antes de leer este capítulo usted debería:</para> <itemizedlist> <listitem> - <para>Saber como compilar e instalar un nuevo kernel - (<xref linkend="kernelconfig">).</para> + <para>Saber cómo compilar e instalar un kernel + personalizado (<xref linkend="kernelconfig">).</para> </listitem> </itemizedlist> </sect1> @@ -106,5023 +107,164 @@ <sect1 id="printing-intro-spooler"> <title>Introducción</title> - <para>Para efecto de poder utilizar impresoras con FreeBSD, es necesario - que configure estas, para trabajar con el sistema de cola de - impresión de Berkeley, también conocido como - Sistema de Cola <application>LPD</application>. Este es el sistema - de control de impresión estándar en FreeBSD. Este - capítulo introduce en el sistema <application>LPD</application>, - llamado comunmente sólo <application>LPD</application>, e - introduce en la configuración del mismo.</para> - - <para>Si usted esta familiarizado con el sistema de cola de - impresión <application>LPD</application>, o bien, con - algun otro sistema de impresión, puede saltar a la + <para>Si quiere utilizar impresoras con &os; debe + configurarlas de forma que funcionen con el sistema de cola de + impresión de Berkeley, también conocido como + sistema de cola <application>LPD</application>. Es el sistema + de control de impresión estándar en &os;. Este + capítulo trata sobre el sistema <application>LPD</application>, + al que en adelante nos referiremos simplemente como + <application>LPD</application>, y le introducirá + en la configuración del mismo.</para> + + <para>Si está familiarizado con el sistema de cola de + impresión <application>LPD</application>, o bien con + algún otro sistema de impresión, puede pasar a la sección <link - linkend="printing-intro-setup">Configurando el sistema de - Cola de Impresión</link>.</para> + linkend="printing-intro-setup">Configuración del sistema de + cola de impresión</link>.</para> - <para>La aplicación <application>LPD</application> es - responsable de controlar todo lo que se refiere a impresión. - Es responsable de un gran numero de cosas, tales como:</para> + <para><application>LPD</application> se encarga de controlar + todo lo relacionado con la impresión, lo que en consecuencia + implica encargarse de lo siguiente:</para> <itemizedlist> <listitem> - <para>Controla el acceso a las impresoras conectadas directamente - al ordenador y las impresoras conectadas a otras + <para>Controlar el acceso a las impresoras conectadas directamente + al sistema y a impresoras conectadas a otras máquinas de la red.</para> </listitem> <indexterm><primary>trabajos de impresión</primary></indexterm> <listitem> - <para>Habilita a usuarios, para efecto de que puedan enviar ficheros - a imprimir; estos envios se conocen como <emphasis>trabajos</emphasis> + <para>Permitir que ciertos usuarios puedan enviar ficheros para + su impresión; estos envíos reciben el nombre de + <emphasis>trabajos</emphasis> (<quote>jobs</quote>).</para> </listitem> <listitem> - <para>Previene el hecho de que varios usuarios accesen a la impresora - al mismo tiempo, al mantener un orden en la cola de impresión - (<quote>queue</quote>) para cada impresora.</para> + <para>Evita que usuarios diferentes accedan a la impresora al + mismo tiempo manteniendo un orden estricto en la cola de + impresión de cada impresora.</para> </listitem> <listitem> - <para>Puede imprimir <emphasis>encabezados</emphasis> (<quote>header</quote>) - (también conocidos como <emphasis>titularess</emphasis> o - páginas de <emphasis>aviso</emphasis>), de tal forma que los - usuarios identifiquen fácilmente sus impresiones, de una pila - de impresiones.</para> + <para>Imprimir <emphasis>encabezados</emphasis> + de forma que los usuarios puedan distinguir + fácilmente los trabajos que han impreso.</para> </listitem> <listitem> <para>Se ocupa de los parámetros para impresoras - conectadas a puertos seriales.</para> + conectadas a puertos serie.</para> </listitem> <listitem> - <para>Puede enviar trabajos de impresión por medio de - una red, a una cola <application>LPD</application> de una - maquina remota.</para> + <para>Enviar trabajos de impresión a través + de una red a la cola <application>LPD</application> de una + máquina remota.</para> </listitem> <listitem> - <para>Puede ejecutar filtros especiales para dar formato a - trabajos que requieren de un manejo de lenguaje de impresión - diferente o impresoras de diferentes capacidades.</para> + <para>Ejecutar filtros especiales para formatear + trabajos que requieren la gestión de lenguajes + de impresión o impresoras de diferentes + características.</para> </listitem> <listitem> - <para>Puede mantener un registro por uso de la impresora.</para> + <para>Mantener un registro del uso de la impresora.</para> </listitem> </itemizedlist> - <para>Por medio de un fichero de configuración - (<filename>/etc/printcap</filename>), y por medio de programas - especiales de filtraje, usted puede habilitar al sistema - <application>LPD</application> para hacer todo o una parte de - lo mencionado anteriormente, para una gran variedad de - impresoras.</para> + <para>Gracias al fichero de configuración + (<filename>/etc/printcap</filename>) y mediante programas + especiales de filtrado puede hacerse que el sistema + <application>LPD</application> cumpla todas las tareas citadas o + si lo prefiere solo unas cuantas; además puede hacerlo + en una gran variedad de impresoras.</para> <sect2 id="printing-intro-why"> - <title>¿Por qué utilizar una Cola de Impresión?</title> + <title>¿Por qué utilizar una cola de impresión?</title> - <para>Si usted es la única persona que hace uso de su sistema, - probablemente se pregunte por que preocuparse por utilizar un sistema - de cola de impresión, cuando no requiere acceso a controles, - encabezados o cuentas para imprimir. Mientras que es posible habilitar - un acceso a su impresora de forma directa, usted debe utilizar el - sistema de cola de impresión, por las siguientes razones:</para> + <para>Si es usted la única persona que usa el sistema + se estará por qué preocuparse de utilizar un sistema + de cola de impresión si es evidente que no necesita + restricciones de acceso, encabezados ni cuentas de + impresión. Puede utilizar el acceso directo a + impresión, pero debería utilizar una cola + de impresión por las siguientes razones:</para> <itemizedlist> <listitem> - <para>El sistema <application>LPD</application> opera los trabajos de - impresión es segundo plano; esto es, que usted no tiene que - esperar a que los datos sean pasados a la impresora para continuar - trabajando.</para> + <para>El sistema <application>LPD</application> ejecuta los trabajos + en segundo plano, esto es, no tiene que esperar a que la + impresora procese los datos para seguir trabajando.</para> </listitem> <indexterm><primary>TeX</primary></indexterm> <listitem> - <para>Convenientemente <application>LPD</application> puede ejecutar - un trabajo para que sea filtrado, para añadir caracteres de - día/hora o bien convertir un fichero con formato especial - (tal como ficheros TeX DVI) a un formato que la impresora entiende. - De tal manera que usted no tenga que hacer estos pasos manualmente. - </para> + <para><application>LPD</application> puede procesar un + trabajo de forma que pase por filtros, añadir cabeceras + de fecha y hora o convertir un fichero de formato especial + (por ejemplo &tex; DVI) a un formato que la impresora entienda + y que no tenga usted que ocuparse de ello + manualmente.</para> </listitem> <listitem> - <para>Muchos programas, libres y comerciales, proveen de un sistema - de impresión que esta basado en el sistema de cola de - impresión. Al configurar su sistema de cola de - impresión, usted podrá soportar otro software que - instale en el futuro o el que tiene actualmente.</para> + <para>Muchos programas, tanto libres como comerciales, + desde los que se puede imprimir están hechos pensando + en que haya disponible un sistema de impresión. + Una vez que configure un sistema de colas podrá utilizar + software que ya tiene instalado y preparar el campo para + el que instale en el futuro.</para> </listitem> </itemizedlist> </sect2> </sect1> <sect1 id="printing-intro-setup"> - <title>Configuración Básica</title> - - <para>Para efecto de utilizar impresoras con el sistema de - cola <application>LPD</application>, es necesario que se instale - físicamente la impresora y el software de - <application>LPD</application>. Este documento describe estos dos - niveles de configuración:</para> - - <itemizedlist> - <listitem> - <para>Vea la sección <link linkend="printing-simple"> - Configuración Simple de una Impresora</link>, para aprender - a conectar una impresora, indicarle a <application>LPD</application> - como comunicarse con ella, e imprimir ficheros de texto plano en - dicha impresora.</para> - </listitem> - - <listitem> - <para>Vea la sección <link linkend="printing-advanced"> - Configuración Avanzada de una Impresora</link>, para ver - como imprimir gran variedad de formatos especiales, imprimir - encabezados, para imprimir por medio de una red, controlar acceso - a las impresoras y crear cuentas de impresión.</para> - </listitem> - </itemizedlist> - - <sect2 id="printing-simple"> - <title>Configuración Simple de una Impresora</title> - - <para>La presente sección le mostrará como instalar - físicamente la impresora, así como el software de - <application>LPD</application> para usar dicha impresora. - Le mostrará lo básico de:</para> - - <itemizedlist> - <listitem> - <para>La sección <link linkend="printing-hardware"> - Instalación Física</link>, le da algunos consejos - sobre como instalar su impresora a los puertos de su - computadora.</para> - </listitem> - - <listitem> - <para>La sección <link linkend="printing-software"> - Instalación de Software</link>, le muestra como instalar - y configurar el fichero de configuración de - <application>LPD</application> (<filename>/etc/printcap</filename>). - </para> - </listitem> - </itemizedlist> - - <para>Si usted esta instalando una impresora que utiliza protocolos de - red para imprimir en lugar de una conexión directa a su - puerto serial o paralelo, vea la sección <link - linkend="printing-advanced-network-net-if">Impresoras con Interfaces - de Red para Secuencia de Datos</link>.</para> - - <para>Aun cuando esta sección se llama <quote>Configuración - Simple de una Impresora</quote>, puede resultar un tanto - complicada. Conseguir que su impresora trabaje con su ordenador y con - la cola de impresión <application>LPD</application> es la parte - más compleja. Las opciones avanzadas, tal como imprimir - encabezados y crear cuentas, son sencillas una vez que su impresora - está trabajando.</para> - - <sect3 id="printing-hardware"> - <title>Instalación Física</title> - - <para>Esta sección le informa sobre varias fomras en que - puede usted conectar la impresora a su PC. Se describen los tipos - de puertos y cables, así como la configuración que - debe tener en su kernel, para permitir que FreeBSD se pueda - comunicar con su impresora.</para> - - <para>Si ya ha conectado su impresora y ha impreso exitosamente - trabajando en otro sistema operativo, probablemente desee brincar - a la sección <link linkend="printing-software">Configuración - del Software</link>.</para> - - <sect4 id="printing-ports"> - <title>Puertos y Cables</title> - - <para>Practicamente cualquier impresora que adquiera hoy en día - para PC, cuenta con soporte para una o ambas interfaces que se - presentan a continuación:</para> - - <itemizedlist> - <indexterm> - <primary>impresora</primary> - <secondary>serial</secondary> - </indexterm> - <listitem> - <para>La interfaz <emphasis>serial</emphasis>, utiliza el puerto - serial de su computadora para enviar datos a la impresora. La - interfaz serial es común en la industria de la - computación y los cables existen disponibles facilmente - e incluso sencillos de hacer. En ocasiones las interfaces seriales - requieren de cables especiales y posiblemente cierta - configuración compleja de opciones de comunicación. - </para> - </listitem> - - <indexterm> - <primary>impresora</primary> - <secondary>en paralelo</secondary> - </indexterm> - <listitem> - <para>La interfaz en <emphasis>paralelo</emphasis> utiliza el puerto - paralelo de su computadora para enviar datos a la impresora. Las - interfaces en paralelo son comunes en el mercado de las PCs. Los - cables son fáciles de conseguir, pero un poco más - complicados de hacer a mano. Normalmente no existen opciones de - comunicación, haciendo su configuración mucho - más sencilla.</para> - - <indexterm> - <primary>centronics</primary> - <see>impresoras en paralelo</see> - </indexterm> - <para>En ocasiones las interfaces en paralelo son conocidas como - interfaces <quote>Centronics</quote>, en virtud del tipo de - conector en la impresora.</para> - </listitem> - </itemizedlist> - - <para>En términos generales los interfaces seriales son más - lentos que las interfaces en paralelo. Por otro lado los interfaces en - paralelo sólo ofrecen comunicación de una vía (de - la computadora a la impresora), mientras que los seriales ofrecen de - dos vías. Gran cantidad de recientes impresoras y puertos - paralelos, pueden comunicarse en ambas direcciones bajo FreeBSD, - cuando se utiliza un cable compatible con IEEE1284.</para> - - <indexterm><primary>PostScript</primary></indexterm> - <para>Normalmente, el único escenario donde requiere de una - comunicación de ambas vías con la impresora, es - cuando la impresora maneja PostScript. Las impresoras que manejan - PostScript detallan gran cantidad de información. De hecho, - los trabajos PostScript, son programas enviados a la impresora; los - cuales no requieren de papel y pueden enviar la salida directamente - a la computadora. PostScript utiliza una comunicación de dos - vías, para informar al ordenador de los problemas que se - puedan presentar, tal como errores en los programas PostScript o - papeles atascados. Sus usuarios pueden apreciar este tipo de - información. Más allá de esto, la mejor forma - de contabilizar con impresoras PostScript, es utilizando dos vías - de comunicación: usted solicita a la impresora el conteo de - impresiones (esto es, todas las impresiones hechas en su vida), - posteriormente envia el trabajo del usuario y repite la solicitud - de conteo. Resta los dos valores obtenidos y sabra cuanto debe - cobrar al usuario por uso de papel.</para> - </sect4> - - <sect4 id="printing-parallel"> - <title>Puertos Paralelos</title> - - <para>Para conectar una impresora usando el puerto en paralelo, - conecte el cable Centronics entre la impresora y la - computadora. Las instrucciones que vienen con su impresora, - con su computadora o ambas, deben ser una buena guía - para llevar esto a cabo.</para> - - <para>Recuerde cual es el puerto en paralelo que utilizó en - su computadora. Para FreeBSD, el primer puerto paralelo es - <filename>/dev/lpt0</filename>, el segundo puerto es - <filename>/dev/lpt1</filename> y así sucesivamente.</para> - </sect4> - - <sect4 id="printing-serial"> - <title>Puertos Seriales</title> - - <para>Para conectar una impresora, usando el puerto serial, conecte - el cable apropiado entre la impresora y el ordenador. Las - instrucciones que vienen con su impresora, computadora o - ambas, deben ser suficientes para llevar esto a cabo.</para> - - <para>Si usted no esta seguro de cual es el <quote>cable serial - apropiado</quote>, puede intentar alguna de las siguientes - alternativas:</para> - - <itemizedlist> - <listitem> - <para>Un cable de <emphasis>módem</emphasis> conecta cada pin del - conector de un extremo, con el conector del otro extremo, de manera - directa. Este tipo de cable también se le conoce como cable - <quote>DTE-a-DCE</quote>.</para> - </listitem> - - <indexterm><primary>cable de módem-nulo</primary></indexterm> - <listitem> - <para>Un cablde de <emphasis>módem-nulo</emphasis> conecta de - fomra directa algunos pins, algunos otros son compartidos (envia - datos para recibir datos, por ejemplo), y algunos otros internamente - son deshabilitados en los conectores. Este tipo de cable - también se le conoce como cable <quote>DTE-a-DTE</quote>.</para> - </listitem> - - <listitem> - <para>Un cable de <emphasis>impresora serial</emphasis>, sólo - es requerido por algunas impresoras poco comunes, es similar al - cable de módem-nulo, pero este envia señales a su - contraparte, en lugar de que internamente se deshabilite.</para> - </listitem> - </itemizedlist> - - <indexterm><primary>velocidad de baudio</primary></indexterm> - <indexterm><primary>paridad</primary></indexterm> - <indexterm><primary>protocolo de control de flujo</primary></indexterm> - <para>También es necesario que configure los parámetros de - comunicación para la impresora, nomralmente esto lo realiza - desde los controles de la misma o interruptores DIP en la impresora. - Selecciones el <literal>bps</literal> (bits por segundo y en ocasiones - llamado <emphasis>velocidad de baudio</emphasis>) más alto, que - tanto su ordenador como impresora soporten. Seleccione 7 u 8 bits de - datos; la paridad establezcala en: ninguna, igual o aleatoria y 1 o 2 - en bits de paro. También seleccione un protocolo para el - control de flujo, que puede ser: ninguno o XON/XOFF (también - conocido como <quote>in-band</quote> o <quote>software</quote>). - Recuerde las opciones que haya seleccionado en esta parte, - para la configuración del software, que veremos en la - siguiente sección.</para> - </sect4> - </sect3> - - <sect3 id="printing-software"> - <title>Configuración del Software</title> - - <para>La presente sección describe la configuración necesaria - para poder imprimir usando el sistema de cola - <application>LPD</application>, bajo FreeBSD.</para> - - <para>Aqui presentamos un resumen de los pasos necesarios:</para> - - <procedure> - <step> - <para>Configure su kernel, si es necesario, para habilitar el uso del - puerto al que esta conectado su impresora. En la sección - <link linkend="printing-kernel">Configuración del Kernel</link> - encontrará toda la información necesaria, para llevar - esto a cabo.</para> - </step> - - <step> - <para>Establecer en modo de comunicación el puerto en paralelo, - si es que esta usando dicho puerto. La sección <link - linkend="printing-parallel-port-mode">Estableciendo el Modo de - Comunicación en el Puerto en Paralelo</link> le da detalles - al respecto.</para> - </step> - - <step> - <para>Compruebe si el sistema operativo puede enviar datos a la - impresora. La sección <link - linkend="printing-testing">Verificando la Comunicación con la - Impresora</link> le puede dar detalles sobre como hacer esto.</para> - </step> - - <step> - <para>Configurar <application>LPD</application> para su uso con la - impresora, modificando el fichero <filename>/etc/printcap</filename>. - Posteriormente en este capítulo, veremos como se lleva a - cabo esto.</para> - </step> - </procedure> - - <sect4 id="printing-kernel"> - <title>Configuración del Kernel</title> - - <para>El kernel del sistema operativo es compilado para trabajar con - ciertos dispositivos. El puerto serial o paralelo de su computadora - es parte de los dispositivos que debe incluirse en la compilación - del kernel. Por lo tanto, puede que sea necesario recompilar el kernel - incluyendo el soporte para el o los puertos serial y/o paralelo, si - es que el kernel no cuente ya con dicho soporte.</para> - - <para>Para averiguar si el kernel que tiene instalado actualmente, cuenta - con soporte para el puerto serial, teclee lo siguiente:</para> - - <screen>&prompt.root; <userinput>dmesg | grep sio<replaceable>N</replaceable></userinput></screen> - - <para>Donde <replaceable>N</replaceable> es el numero de puerto serial, - comenzando desde cero. Si observa una salida similar a la - siguiente:</para> - - <screen>sio2 at 0x3e8-0x3ef irq 5 on isa -sio2: type 16550A</screen> - - <para>entonces su kernel ya cuenta con soporte para el puerto.</para> - - <para>Para averiguar si su kernel cuenta con soporte para el puerto en - paralelo, teclee:</para> - - <screen>&prompt.root; <userinput>dmesg | grep lpt<replaceable>N</replaceable></userinput></screen> - - <para>Donde <replaceable>N</replaceable> es el numero de puerto serial, - comenzando desde cero. Si observa una salida similar a la - siguiente:</para> - - <screen>lpt0 at 0x378-0x37f on isa</screen> - - <para>entonces su kernel cuenta con soporte para el puerto.</para> - - <para>Puede que sea necesario recompilar su kernel, para efecto de que - su kernel cuente con el soporte para el puerto serial o paralelo que - este utilizando su impresora.</para> - - <para>Para añadir soporte para el puerto serial, vea la - sección en Configuración del Kernel. Para añadir - soporte para el puerto paralelo, vea esa sección - <emphasis>y</emphasis> la siguiente sección.</para> - </sect4> - </sect3> - - <sect3 id="printing-dev-ports"> - <title>Añadiendo Dispositivos de Puertos en - <filename>/dev</filename></title> - - <para>Aun cuando el kernel cuente con el soporte de comunicaciones para - puertos seriales o en paralelo, aun deberá de contar con las - interfaces necesarias en su sistema, por medio de las cuales el sistema - puede enviar y recibir los datos. En el directorio - <filename>/dev</filename> es donde encontrará dichas interfaces - en su sistema.</para> - - <para>Para <emphasis>añadir una entrada, para sus puertos, en el - directorio <filename>/dev</filename></emphasis> deberá:</para> - - <procedure> - <step> - <para>Cambiar de usuario a <username>root</username> con el comando - &man.su.1;. Ingresar la contraseña de <username>root</username> - cuando le sea solicitada.</para> - </step> - - <step> - <para>Cambiar su posición al directorio <filename>/dev</filename> - de la siguiente forma:</para> - - <screen>&prompt.root; cd <filename>/dev</filename></screen> - </step> - - <step> - <para>Teclear:</para> - - <screen>&prompt.root; <userinput>./MAKEDEV <replaceable>PUERTO</replaceable></userinput></screen> - - <para>Donde <replaceable>PUERTO</replaceable> es la entrada del - dispositivo que desea crear. Puede utilizar - <literal>lpt0</literal> para el primer puerto en paralelo, - <literal>lpt1</literal> para el segundo puerto, y así - sucesivamente, para el primer puerto serial puede utilizar - <literal>ttyd0</literal>, y para el segundo - <literal>ttyd1</literal> y así sucesivamente.</para> - </step> - - <step> - <para>Teclee:</para> - - <screen>&prompt.root; <userinput>ls -l <replaceable>PUERTO</replaceable></userinput></screen> - - <para>para asegurarase de que la entrada del dispositivo correspondiente - se ha creado.</para> - </step> - </procedure> - - <sect4 id="printing-parallel-port-mode"> - <title>Configurando el modo de Comunicación para el - Puerto Paralelo</title> - - <para>Cuando utiliza el puerto paralelo, puede seleccionar si FreeBSD va - a utilizar un modo de comunicación por medio de interruptores - o a petición, con la impresora.</para> - - <itemizedlist> - <listitem> - <para>El método por medio de <emphasis>interruptores</emphasis> - es el método que utiliza el kernel GENERICO de FreeBSD. Con - este método el sistema operativo utiliza un IRQ para - determinar si la impresora esta lista para recibir datos.</para> - </listitem> - - <listitem> - <para>El método a <emphasis>petición</emphasis> le - indica al sistema operativo que constantemente le pregunte a - la impresora si esta lista para recibir datos. Una vez que - ha obtenido respuesta, el kernel comienza a transferir los - datos.</para> - </listitem> - </itemizedlist> - - <para>Normalmente el método por medio de interruptores es más - rápido, pero nos ocupa un preciado IRQ. Se sabe que algunas - impresoras nuevas de HP no funcionan muy bien con este método - aparentemente debido (sin que aun se entienda el por que) a un - problema de tiempos. Estas impresoras necesitan el método a - petición. Es conveniente que utilice el método que - se ajuste a sus necesidades. Algunas impresoras funcionan en ambos - métodos, pero son dolorosamente lentas usando el método - por medio de interruptores.</para> - - <para>Para establecer el método de comunicación, puede - hacerlo de dos formas: configurando su kernel o bien, utilizando - el programa &man.lptcontrol.8;.</para> - - <para><emphasis>Para establecerlo configurando su kernel, - deberá:</emphasis></para> - - <procedure> - <step> - <para>Editar su fichero de configuración del kernel. Busque - una línea que contenga <literal>lpt0</literal>, si esta - no existe añadala. Si esta configurando su segundo puerto - en paralelo, use <literal>lpt1</literal>. Para un tercer puerto - paralelo utilice <literal>lpt2</literal> y así - sucesivamente.</para> - - <itemizedlist> - <listitem> - <para>Si desea utilizar el modo por medio de interruptor, añada - el especificador de <literal>irq</literal>:</para> - - <programlisting>device lpt0 at isa? port? tty irq <replaceable>N</replaceable> vector lptintr</programlisting> - - <para>Donde <replaceable>N</replaceable> es el numero de IRQ del puerto - paralelo de su computadora.</para> - </listitem> - - <listitem> - <para>Si desea utilizar el modo a petición, no necesita agregar - el especificador de <literal>irq</literal>:</para> - - <programlisting>device lpt0 at isa? port? tty vector lptintr</programlisting> - </listitem> - </itemizedlist> - </step> - - <step> - <para>Guarde el fichero. Posteriormente termine el proceso de - configuración, recompilación e instalación del - kernel, después reinicie el sistema. Vea <link - linkend="kernelconfig">Configuración del Kernel</link> para - más información al respecto.</para> - </step> - </procedure> - - <para><emphasis>Para establecer el modo de comunicación</emphasis> - usando &man.lptcontrol.8;:</para> - - <procedure> - <step> - <para>Teclee:</para> - - <screen>&prompt.root; <userinput>lptcontrol -i -d <filename>/dev/lpt<replaceable>N</replaceable></filename></userinput></screen> - - <para>para indicar el modo por medio de interruptor para - <literal>lpt<replaceable>N</replaceable></literal>.</para> - </step> - - <step> - <para>Teclee:</para> - - <screen>&prompt.root; <userinput>lptcontrol -p -d <filename>/dev/lpt<replaceable>N</replaceable></filename></userinput></screen> - - <para>para establecer el modo a petición para - <literal>lpt<replaceable>N</replaceable></literal>.</para> - </step> - </procedure> - - <para>Estos comandos los podría incluir en su fichero - <filename>/etc/rc.local</filename> para que el sistema reconozca - estos modos cada vez que inicia el sistema. Vea &man.lptcontrol.8; para - más información al respecto.</para> - </sect4> - - <sect4 id="printing-testing"> - <title>Verificando la Comunicación de la Impresora</title> - - <para>Antes de proceder a configurar el sistema de cola de - impresión, es conveniente verificar que nuestro sistema - operativo pueda enviar datos exitosamente a nuestra impresora. Es - mucho más sencillo detectar errores cuando se configura por - separado el método de comunicación y el sistema de - cola de impresión.</para> - - <para>Para probar nuestra impresora, enviaremos un poco de texto. Para - impresoras que inmediatamente pueden imprimir caracteres, el programa - &man.lptest.1; es perfecto: este genera todos los 96 caracteres ASCII - imprimibles en 96 líneas.</para> - - <indexterm><primary>PostScript</primary></indexterm> - <para>Para impresoras PostScript (o de otro lenguaje de impresión), - vamos a necesitar una prueba más sofisticada. Un pequeño - programa PostScript, como el siguiente, será suficiente:</para> - - <programlisting>%!PS -100 100 moveto 300 300 lineto stroke -310 310 moveto /Helvetica findfont 12 scalefont setfont -(Is this thing working?) show -showpage</programlisting> - - <para>El código PostScript descrito puede guardarse en un fichero y - usarse en el ejemplo que aparece en la siguiente sección.</para> - - <indexterm><primary>PCL</primary></indexterm> - <note> - <para>Cuando este documento se refiere a lenguaje de impresión, - se asume lenguaje como PostScript y no el PCL de Hewlett Packard. Aun - cuando PCL tiene gran funcionalidad, pueden acabar mezclandose - caracteres de escape con el texto plano, y ese es el tipo de lenguaje - de impresión, para el cual necesitaremos realizar ajustes - especiales.</para> - </note> - - <sect5 id="printing-checking-parallel"> - <title>Verificando Impresoras en Paralelo</title> - - <indexterm> - <primary>impresora</primary> - <secondary>paralelo</secondary> - </indexterm> - <para>Esta sección le indica como comprobar la comunicación - de una impresora en paralelo, bajo FreeBSD.</para> - - <para><emphasis>Para probar una impresora en paralelo:</emphasis></para> - - <procedure> - <step> - <para>Cambiar a <username>root</username> con el comando &man.su.1;</para> - </step> - - <step> - <para>Enviar datos a la impresora.</para> - - <itemizedlist> - <listitem> - <para>Si la impresora puede imprimir texto plano, usar el comando - &man.lptest.1;. Teclee:</para> - - <screen>&prompt.root; <userinput>lptest > /dev/lpt<replaceable>N</replaceable></userinput></screen> - - <para>Donde <replaceable>N</replaceable> es el numero del puerto en - paralelo, comenzando desde cero.</para> - </listitem> - - <listitem> - <para>Si la impresora utiliza PostScript u otro lenguaje de - impresión, entonces envie un pequeño programa a - la impresora. Teclee:</para> - - <screen>&prompt.root; <userinput>cat > /dev/lpt<replaceable>N</replaceable></userinput></screen> - - <para>Posteriormente, línea por línea teclee el - programa, <emphasis>cuidadosamente</emphasis> en virtud de que no - puede editar una línea ya que presionado la tecla - <literal>RETURN</literal> o <literal>ENTER</literal>. Una vez que - ha terminado de introducir el programa, presiona las teclas - <literal>CONTROL+D</literal>, o cualquier tecla que funcione para - efecto de especificar un fin de fichero.</para> - - <para>Otra manera de hacer esto, es guardar el programa en un - fichero y teclear:</para> - - <screen>&prompt.root; <userinput>cat <replaceable>fcihero</replaceable> > /dev/lpt<replaceable>N</replaceable></userinput></screen> - - <para>Donde <replaceable>fichero</replaceable> es el nombre del - fichero que le dio al programa, que desea enviar a imprimir.</para> - </listitem> - </itemizedlist> - </step> - </procedure> - - <para>En este punto debe ver alguna impresión. No se preocupe si - el texto no aparece bien; es algo que arreglaremos más - adelante.</para> - </sect5> - - <sect5 id="printing-checking-serial"> - <title>Verificando una Impresora Serial</title> - - <indexterm> - <primary>impresora</primary> - <secondary>serial</secondary> - </indexterm> - <para>Esta sección explica como verificar la comunicación, - bajo FreeBSD, de una impresora conectada al puerto serial.</para> - - <para><emphasis>Para probar una impresora conectada el puerto - serial:</emphasis></para> - - <procedure> - <step> - <para>Cambiar a <username>root</username> usando &man.su.1;.</para> - </step> - - <step> - <para>Edite el fichero <filename>/etc/remote</filename>. - Añadiendo la siguiente entrada:</para> - - <programlisting>printer:dv=/dev/<replaceable>puerto</replaceable>:br#<replaceable>bps</replaceable>:pa=<replaceable>paridad</replaceable></programlisting> - - <indexterm><primary>bits-por-segundo</primary></indexterm> - <indexterm><primary>puerto serial</primary></indexterm> - <indexterm><primary>paridad</primary></indexterm> - <para>Donde <replaceable>puerto</replaceable> es el dispositivo usado - por el puerto serial (<literal>ttyd0</literal>, - <literal>ttyd1</literal>, etc.), <replaceable>bps</replaceable> se - refiere a la velocidad, en bits-por-segundo, a la que se comunica la - impresora, y <replaceable>paridad</replaceable> es la paridad - requerida por la impresora (ya sea <literal>even</literal>, - <literal>odd</literal>, <literal>none</literal> o - <literal>zero</literal>).</para> - - <note> - <para>N de T: Las opciones de paridad se han dejado en inglés, - en virtud de que así deberán especificarse en la - configuración.</para> - </note> - - <para>He aqui un ejemplo para una impresora conectada por medio de un - puerto serial, el tercer puerto a 19200 bps, sin paridad:</para> - - <programlisting>printer:dv=/dev/ttyd2:br#19200:pa=none</programlisting> - </step> - - <step> - <para>Conectarse a la impresora por medio de &man.tip.1;. - Teclee:</para> - - <screen>&prompt.root; <userinput>tip printer</userinput></screen> - - <para>Si este paso no funciona, edite nuevamente el fichero - <filename>/etc/remote</filename> e intente utilizando - <filename>/dev/cuaa<replaceable>N</replaceable></filename> - en lugar de utilizar - <filename>/dev/ttyd<replaceable>N</replaceable></filename>.</para> - </step> - - <step> - <para>Envio de datos a la impresora.</para> - - <itemizedlist> - <listitem> - <para>Si la impresora puede imprimir texto plano, entonces utilice - &man.lptest.1;. Teclee:</para> - - <screen>&prompt.user; <userinput>$lptest</userinput></screen> - </listitem> - - <listitem> - <para>Si es una impresora PostScript o que utilice otro lenguaje, - entonces envie un pequeño programa a la impresora. Teclee - el programa, línea por línea, - <emphasis>muy cuidadosamente</emphasis> ya que algunas teclas, como - la de retroceso son significativas para la impresora. Puede ser - que también necesite un caracter especial para marcar el - fin-de-fichero y que la impresora sepa que ha recibido el - programa completo. Para impresoras PostScript, utilice las teclas - <literal>CONTROL+D</literal>.</para> - - <para>Otra variante es, guardar el programa en un fichero y teclear: - </para> - - <screen>&prompt.user; <userinput>><replaceable>fichero</replaceable></userinput></screen> - - <para>Donde <replaceable>fichero</replaceable> es el nombre del - fichero que contiene el programa. Una vez que &man.tip.1; envia - el programa, presione la tecla correspondiente a fin de - archivo.</para> - </listitem> - </itemizedlist> - </step> - </procedure> - - <para>Usted debe ver algo de impresión. No se preocupe si el - texto no se ve del todo bien; posteriormente arreglaremos esto.</para> - </sect5> - </sect4> - </sect3> + <title>Configuración básica</title> - <sect3 id="printing-printcap"> - <title>Habilitando la Cola de Impresión: El fichero - <filename>/etc/printcap</filename></title> + <para>Pendiente de traducción.</para> - <para>En este punto, su impresora debe estar conectada, su kernel - configurado con el soporte de comunicación, y debe haber podido - enviar datos a su impresora. Ahora estamos listos para configurar - <application>LPD</application> para controlar el accesos a nuestra - impresora.</para> - <para>Para efecto de configurar <application>LPD</application>, es - necesario editar el fichero <filename>/etc/printcap</filename>. El - sistema de cola de <application>LPD</application> lee este fichero - cada vez que se utiliza, de tal forma que los cambios que se realicen - en este fichero, surten efecto inmediatamente.</para> - - <indexterm> - <primary>impresora</primary> - <secondary>características</secondary> - </indexterm> - <para>El formato que mantiene el fichero &man.printcap.5; es muy - concreto. Utilice su editor de texto favorito para hacer cambios - en <filename>/etc/printcap</filename>. El formato es idéntico - al que guardan los ficheros que describen capacidades, tal como - <filename>/usr/share/misc/termcap</filename> y - <filename>/etc/remote</filename>. Para ver mayor información - con respecto al formato, vea la página de ayuda &man.cgetent.3;. - </para> - - <para>De un modo simple, la configuración de una cola consiste en - los siguientes pasos:</para> - - <procedure> - <step> - <para>Seleccione un nombre (y algunos alias convenientes) para la - impresora, y especifíquelos en el fichero - <filename>/etc/printcap</filename> ; vea la sección - <link linkend="printing-naming">Nombrando la Impresora</link> - para más información al respecto.</para> - </step> - - <indexterm><primary>páginas encabezado</primary></indexterm> - <step> - <para>Desactive el encabezado de páginas (el cual esta - activado por default), al insertar la característica - <literal>sh</literal>; vea la sección <link - linkend="printing-no-header-pages">Eliminando las Páginas - de Encabezados</link> para más información al - respecto.</para> - </step> - - <step> - <para>Cree un directorio para la cola, y especifique su - ubicación con la característica - <literal>sd</literal>; vea la sección <link - linkend="printing-spooldir">Creando el Directorio de - la Cola</link> para mayor información.</para> - </step> - - <step> - <para>Ubique el dispositivo <filename>/dev</filename> a - usar por la impresora e indiquelo en el fichero - <filename>/etc/printcap</filename> con la característica - <literal>lp</literal>; vea la sección <link - linkend="printing-device">Identificando el Dispositivo de - Impresión</link> para mayor información. Así - mismo, si la impresora esta conectada a un dispositivo serial, - utilice las características <literal>fs</literal>, - <literal>fc</literal>, <literal>xs</literal> y <literal>xc</literal> - para establecer los parámetros de comunicación; esto - se detalla en la sección <link - linkend="printing-commparam">Configurando los Parámetros de - Comunicación de la Cola de Impresión</link>.</para> - </step> - - <step> - <para>Instalar un filtro de entrada de texto plano; vea la - sección <link linkend="printing-textfilter">Instalando un - Filtro de Texto</link> para más detalles.</para> - </step> - - <step> - <para>Probar la configuración, al imprimir algo con el comando - &man.lpr.1;. Para más detalles vea las secciones <link - linkend="printing-trying">Probando la Configuración</link> y - <link linkend="printing-troubleshooting">Resolución de - Problemas</link>. - </para> - </step> - </procedure> - - <note> - <para>Las impresoras basadas en un lenjuaje, tal como PostScript, no - pueden imprimir texto plano directamente. Los pasos de - configuración mencionados anteriormente, así como las - siguientes secciones, asumen que si usted cuenta con una impresora - de este tipo, sólo va a imprimir ficheros que la impresora - puede manejar.</para> - </note> - - <para>Normalmente los usuarios esperan poder imprimir texto plano a - cualquier impresora conectada al sistema. Los programas que usan como - interfaz de impresión a <application>LPD</application>, asumen - lo mismo. Si usted cuenta con una impresora basada en lenguaje y desea - poder imprimir en el lenguaje de la impresora <emphasis>así como - </emphasis> texto plano, es importante considerar que debe añadir - un paso adicional a los mencionados anteriormente: instalar un programa - de conversión detexto-plano-a-PostScript (u otro lenguaje). La - sección <link linkend="printing-advanced-if-conversion">Acomodando - Trabajos de Texto Plano en Impresoras PostScript</link> le indica como - debe hacerse esto.</para> - - <sect4 id="printing-naming"> - <title>Nombrando la Impresora</title> - - <para>El primer paso (sencillo) es escojer un nombre para su impresora. - En realidad no importa mucho si este nombre es funcional o un tanto - abstracto, en virtud de que usted podrá asignar alias para la - impresora.</para> - - <para>Cuando menos una de las impresoras señaladas en el fichero - <filename>/etc/printcap</filename> debe contar con el alias - <literal>lp</literal>. Este es el nombre de la impresora por default. - Si los usuarios del sistema no cuentan con la variable de entorno - <envar>PRINTER</envar> o bien no especifican en la línea de - comando, al ejecutar cualquier comando de <application>LPD</application>, - el nombre de la impresora a utilizar, entonces <literal>lp</literal> - será la impresora por default a utilizar.</para> - - <para>También, como práctica común, se suele asignar - el último alias a la descripción completa de la - impresora, incluyendo marca y modelo.</para> - - <para>Una vez que ha seleccionado un nombre y algunos aliases, ingreselos - en el fichero <filename>/etc/printcap</filename>. El nombre de la - impresora deberá colocarse en la columna izquierda - máxima. Separe cada alias con una barra vertical e incluya - dos puntos después del último alias.</para> - - <para>En el siguiente ejemplo, comenzaremos con el esqueleto del - fichero <filename>/etc/printcap</filename>, que define dos - impresoras (una de matriz Diablo 630 y una impresora laser - PostScript Panasonic KX-P4455):</para> - - <programlisting># -# Fichero /etc/printcap para el host rose -# -rattan|line|diablo|lp|Diablo 630 Line Printer: - -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:</programlisting> - - <para>En este caso, la primer impresora se llama - <literal>rattan</literal> y tiene como aliases - <literal>line</literal>, <literal>diablo</literal>, - <literal>lp</literal>, y <literal>Diablo 630 Line - Printer</literal>. Dado que tiene el alias - <literal>lp</literal>, tambié se considera la impresora por - default. La segunda impresora se llama - <literal>bamboo</literal>, y cuenta con los aliases - <literal>ps</literal>, <literal>PS</literal>, - <literal>S</literal>, <literal>panasonic</literal>, y - <literal>Panasonic KX-P4455 PostScript v51.4</literal>.</para> - </sect4> - - <sect4 id="printing-no-header-pages"> - <title>Eliminando las Páginas de Encabezados</title> - <indexterm> - <primary>imprimir</primary> - <secondary>páginas de encabezado</secondary> - </indexterm> - - <para>El sistema de cola de impresión - <application>LPD</application>, por default, imprimirá una - <emphasis>página de encabezado</emphasis> para cada trabajo. Esta - página contiene el nombre del usuario que solicitó la - impresión, el host del cual se envio el trabajo y el nombre - del trabajo, todo en letras grandes. Desafortunadamente, todo esta - impresión extra, interfiere con el trabajo de depuración - de la configuración básica de la impresora, por lo que - vamos a deshabilitar esta opción.</para> - - <para>Para eliminar las páginas de encabezado, añada - <literal>sh</literal>en la entrada de la impresora del fichero - <filename>/etc/printcap</filename>. He aqui un ejemplo del fichero - <filename>/etc/printcap</filename> con <literal>sh</literal> - incluida en él:</para> - - <programlisting># -# FIchero /etc/printcap para el host rose - sin paginas de encabezado -# -rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh: - -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:</programlisting> - - <para>Note como hemos utilizado el formato correcto: donde la primer - línea comienza en la primer columna de la izquierda y las - líneas subsecuentes estan cuentan con sangría de un - solo tabulador (<keycap>TAB</keycap>). Cada línea termina con - una diagonal invertida, excepto la última.</para> - </sect4> - - <sect4 id="printing-spooldir"> - <title>Creando el Directorio de la Cola</title> - <indexterm><primary>cola de impresión</primary></indexterm> - <indexterm><primary>trabajos de impresión</primary></indexterm> - - <para>El siguiente paso en la configuración de la cola, es crear el - <emphasis>directorio de cola de impresión</emphasis>, un - directorio en el cual residen los trabajos de impresión hasta que - son llevados a cabo, y donde otros ficheros de soporte se - localizan.</para> - - <para>Dada la naturaleza variante de los directorios de cola, es costumbre - que estos se localicen en <filename>/var/spool</filename>. No es - necesario respaldar el contenido de estos directorios, ya que rehacerlos - es tan simple como ejecutar &man.mkdir.1;.</para> - - <para>También es una buena costumbre crear el directorio con el - mismo nombre que tenga la impresora, como se muestra a - continuación:</para> - - <screen>&prompt.root; <userinput>mkdir /var/spool/<replaceable>nombre-impresora</replaceable></userinput></screen> - - <para>Aunque si cuenta con bastantes impresoras en su red, puede que - desee crear todos los directorios de cola, bajo un sólo - directorio reservado para todas aquellas que imprimen usando - <application>LPD</application>. En nuestro ejemplo haremos esto con - nuestras dos impresoras de ejemplo - <literal>rattan</literal> y - <literal>bamboo</literal>:</para> - - <screen>&prompt.root; <userinput>mkdir /var/spool/lpd</userinput> -&prompt.root; <userinput>mkdir /var/spool/lpd/rattan</userinput> -&prompt.root; <userinput>mkdir /var/spool/lpd/bamboo</userinput></screen> - - <note> - <para>Si a usted le preocupa la privacidad de los trabajos que - imprimen los usuarios, puede que desee proteger el directorio - de cola, de tal forma que no sea de acceso público. Los - directorios de cola deben pertenecer - al usuario daemon y grupo daemon, y debe contar con permisos de - lectura, escritura y navegación por estos y nadie - más. Haremos esto para nuestros ejemplos:</para> - - <screen>&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/rattan</userinput> -&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/bamboo</userinput> -&prompt.root; <userinput>chmod 770 /var/spool/lpd/rattan</userinput> -&prompt.root; <userinput>chmod 770 /var/spool/lpd/bamboo</userinput></screen> - </note> - - <para>Finalmente, debe indicar a <application>LPD</application> acerca - de estos directorios, en el fichero - <filename>/etc/printcap</filename>. Esta indicación se hace - por medio de la característica <literal>sd</literal> :</para> - - <programlisting># -# Fichero /etc/printcap para el host rose - incluyendo directorios de cola -# -rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan: - -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:</programlisting> - - <para>Notese que el nombre de la impresora inicia en la primer columna - mientras que el resto debe contar con sangría de un tabulador y - todas las líneas, excepto la última, terminar con una - diagonal invertida.</para> - - <para>En el caso de que usted no especifique directorio alguno con - <literal>sd</literal>, el sistema de cola usara como default - <filename>/var/spool/lpd</filename> .</para> - </sect4> - - <sect4 id="printing-device"> - <title>Identificando el Dispositivo de Impresión</title> - - <para>En la sección <link - linkend="printing-dev-ports">Añadiendo Dispositivos de - Puertos en <filename>/dev</filename></link>, vimos que dispositivo bajo - el directorio <filename>/dev</filename> iba a utilizar FreeBSD para - comunicarse con la impresora. Ahora le indicaremos esto a - <application>LPD</application>. Cuando el sistema de cola tiene un - trabajo por imprimir, abrirá el dispositivo especificado en - nombre del programa filtro (reponsable de pasar los datos a la - impresora).</para> - - <para>Para efecto de indicar esto, en la entrada de la impresora en - el fichero <filename>/etc/printcap</filename>, usaremos la - característica <literal>lp</literal>.</para> - - <para>En el ejemplo que hemos visto, asumiremos que - <literal>rattan</literal> esta conectada al primer puerto paralelo, y - <literal>bamboo</literal> en el sexto puerto serial; he aqui lo que - tendriamos que añadir a <filename>/etc/printcap</filename>:</para> - - <programlisting># -# Fichero /etc/printcap para el host rose - identificando los dispositivos a usar -# -rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0: - -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:\ - :lp=/dev/ttyd5:</programlisting> - - <para>Si usted no indica la característica <literal>lp</literal> - en el fichero <filename>/etc/printcap</filename>, - <application>LPD</application> usará el dispositivo - <filename>/dev/lp</filename> por default. El dispositivo - <filename>/dev/lp</filename> actualmente no existe en FreeBSD.</para> - - <para>Si la impresora que esta instalando esta conectada a un puerto - en paralelo, puede saltar la siguiente parte y dirijirse a la - sección <link linkend="printing-textfilter">Instalando un - Filtro de Texto</link>. De otra manera, asegurese de seguir las - instrucciones de la siguiente sección.</para> - </sect4> - - <sect4 id="printing-commparam"> - <title>Configurando los Parámetros de Comunicación - del la Cola de Impresión</title> - <indexterm> - <primary>impresora</primary> - <secondary>serial</secondary> - </indexterm> - - <para>Para impresoras conectadas a un puerto serial, - <application>LPD</application> puede especificar la velocidad de - bps, la paridad, y otros parámetros de comunicación - en lugar del programa filtro que manda los datos a la - impresora. Esto es una ventaja dado lo siguiente:</para> - - <itemizedlist> - <listitem> - <para>Le permite probar diferentes parámetros de - comunicación, con el simple hecho de modificar el fichero - <filename>/etc/printcap</filename>; con lo cual no es necesario - recompilar el programa filtro.</para> - </listitem> - - <listitem> - <para>Habilita el sistema de cola de impresión para hacer - uso del mismo programa filtro, para varias impresoras que pueden - contar con diferentes configuraciones de comunicación.</para> - </listitem> - </itemizedlist> - - <para>Para efecto de controlar los parámetros de - comunicación por medio de un puerto serial, con la - característica <literal>lp</literal>, en el fichero - <filename>/etc/printcap</filename>, utilizarmos lo - siguiente:</para> - - <variablelist> - <varlistentry> - <term><literal>br#<replaceable>bps-velocidad</replaceable></literal></term> - - <listitem> - <para>Establece la velocidad de comunicación del dispositivo, - donde <replaceable>bps-velocidad</replaceable> puede ser 50, 75, 110, - 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, - 19200, o 38400 bits-por-segundo.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><literal>fc#<replaceable>limpiar-bits</replaceable></literal></term> - - <listitem> - <para>Limpia la marca de bits, donde - <replaceable>limpiar-bits</replaceable> afecta en la estructura de - <replaceable>sgttyb</replaceable> una vez que se ha entablado la - comunicación con el dispositivo.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><literal>fs#<replaceable>establece-bits</replaceable></literal></term> - - <listitem> - <para>Establece la marca de bits - <replaceable>establece-bits</replaceable> en la estructura de - <replaceable>sgttyb</replaceable>.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><literal>xc#<replaceable>limpia-bits</replaceable></literal></term> - - <listitem> - <para>Limpieza del modo bits, de forma local - <replaceable>limpia-bits</replaceable> una vez que se ha abierto - la comunicación con el dispositivo.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><literal>xs#<replaceable>establece-bits</replaceable></literal></term> - - <listitem> - <para>Establece el modo bits, de forma local - <replaceable>establece-bits</replaceable>.</para> - </listitem> - </varlistentry> - </variablelist> - - <para>Para mayor información con respecto al uso de las - caractrística de bits: - <literal>fc</literal>, <literal>fs</literal>, - <literal>xc</literal>, y <literal>xs</literal>, - vea el fichero - <filename>/usr/include/sys/ioctl_compat.h</filename>.</para> - - <para>Cuando <application>LPD</application> abre el canal de - comunicación con el dispositivo especificado por - <literal>lp</literal>, lee la marca de bits en la estructura - <literal>sgttyb</literal>; limpia cualquier bit en la - característica <literal>fc</literal> y establece bits - en la característica <literal>fs</literal>, para - posteriormente aplicar la configuración resultante. El - mismo procedimiento se sigue en el modo de bits local.</para> - - <para>Ahora añadamos la impresora de ejemplo que esta - conectada al puerto serial numero seis. La velocidad de bps la - estableceremos en 38400 bps. Para las marcas de bits usaremos - <literal>TANDEM</literal>, - <literal>ANYP</literal>, <literal>LITOUT</literal>, - <literal>FLUSHO</literal>, y <literal>PASS8</literal>. - Para el modo local de bits, estableceremos - <literal>LITOUT</literal> y <literal>PASS8</literal> :</para> - - <programlisting>bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:\ - :lp=/dev/ttyd5:fs#0x82000c1:xs#0x820:</programlisting> - </sect4> - - <sect4 id="printing-textfilter"> - <title>Instalando un Filtro de Texto</title> - <indexterm><primary>filtros de impresión</primary></indexterm> - - <para>Ahora estamos listos para indicarle a <application>LPD</application> - que filtro de texto debe utilizar para enviar los trabajos a la - impresora. Un <emphasis>filtro de texto</emphasis>, también - conocido como <emphasis>filtro de entrada</emphasis>, es un - programa que ejecuta <application>LPD</application> cuando tiene - un trabajo para imprimir. Cuando <application>LPD</application> - ejecuta el filtro de texto para una impresora, configura de manera - estandar la entrada para el trabajo a imprimir, y la salida - estandar a la impresora indicada en la característica - <literal>lp</literal>. El filtro espera leer el trabajo de la - entrada estandar, hacer el trabajo de traducción necesario - para la impresora, y enviar los resultados a la salida estandar, lo - cual será impreso. Para mayor información en los - filtros de texto, vea la sección <link - linkend="printing-advanced-filters">Como Trabajan los Filtros</link>. - </para> - - <para>En el caso de nuestro ejemplo, el filtro de texto puede ser un - pequeño script que sólo ejecute - <command>/bin/cat</command> para enviar el trabajo a la - impresora. FreeBSD cuenta con otro filtro llamado - <filename>lpf</filename> que controla los caracteres de regreso y - subrayado en impresoras que pueden presentar problemas con - dichos caracteres. Y desde luego, usted puede utilizar cualquier - filtro que desee. El filtro <command>lpf</command> se describe a - detalle en la sección titulada <link - linkend="printing-advanced-lpf">lpf: un Filtro de Texto</link>.</para> - - <para>En primer lugar hagamos del script - <filename>/usr/local/libexec/if-simple</filename> un simple filtro - de texto. Introduzca el siguiente texto en un fichero, con su - eitor de texto favorito:</para> - - <programlisting>#!/bin/sh -# -# if-simple - Filtro de texto simple para lpd -# Instalado en la ruta /usr/local/libexec/if-simple -# -# Simplemente copia stdin a stdout. Ignora todos los argumentos del filtro. - -/bin/cat && exit 0 -exit 2</programlisting> - - <para>Haga el fichero ejecutable:</para> - - <screen>&prompt.root; <userinput>chmod 555 /usr/local/libexec/if-simple</userinput></screen> - - <para>Ahora indiquele a LPD que lo use, al añadirlo con la - característica <literal>if</literal>, en el fichero - <filename>/etc/printcap</filename>. Este filtro, lo vamos a - añadir en ambas impresoras de nuestro ejemplo, en el fichero - <filename>/etc/printcap</filename>:</para> - - <programlisting># -# Fichero /etc/printcap para host rose - añadiendo el filtro de texto -# -rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple: - -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:\ - :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:\ - :if=/usr/local/libexec/if-simple:</programlisting> - </sect4> - - <sect4> - <title>Encienda <application>LPD</application></title> - - <para>&man.lpd.8; se puede correr desde <filename>/etc/rc</filename>, - controlado por la variable <literal>lpd_enable</literal>. Esta - variable por default esta deshabilitada con <literal>NO</literal>. - Si usted no cuenta con esta línea, añadala de la - siguiente forma:</para> - - <programlisting>lpd_enable="YES"</programlisting> - - <para>al fichero <filename>/etc/rc.conf</filename>, y posteriormente puede - reiniciar su sistema o ejecutar &man.lpd.8;.</para> - - <screen>&prompt.root; <userinput>lpd</userinput></screen> - </sect4> - - <sect4 id="printing-trying"> - <title>Probando la Configuración</title> - - <para>Usted ha llegado al fin de una configuración sencilla de - <application>LPD</application>. Desafortunadamente, aun no es - momento de una felicitación, dado que aun debemos probar - la configuración y resolver cualquier problema que se - presente. Para efecto de probar la configuración, intente - imprimir algo. Para imprimir con el sistema - <application>LPD</application>, utilice el comando &man.lpr.1;, - el cual envia el trabajo para su impresión.</para> - - <para>Puede combinar &man.lpr.1; con el programa &man.lptest.1;, - el cual se ve en la sección <link - linkend="printing-testing">Verificando la Comunicación - con la impresora</link>, para generar un texto de prueba.</para> - - <para><emphasis>Simplemente para probar la configuración de - <application>LPD</application>, intente:</emphasis></para> - - <para>Teclee:</para> - - <screen>&prompt.root; <userinput>lptest 20 5 | lpr -P<replaceable>nombre-impresora</replaceable></userinput></screen> - - <para>Donde <replaceable>nombre-impresora</replaceable> es uno de - los nombres (o alias) que aparecen especificados en el fichero - <filename>/etc/printcap</filename> para las impresoras. Para - probar con la impresora por default, teclee &man.lpr.1; sin la - opción <option>-P</option>. Nuevamente, si esta probando - una impresora que espera recibir PostScript, envie un programa - PostScript en ese lenguaje, en lugar de usar &man.lptest.1;. Puede - hacer esto poniendo el programa en un fichero y tecleando - <command>lpr <replaceable>fichero</replaceable></command>.</para> - - <para>Para una impresora PostScript, usted debe visualizar el - resultado del programa. Si esta usando &man.lptest.1;, - entonces su resultado debe verse algo similar a lo siguiente:</para> - - <programlisting>!"#$%&'()*+,-./01234 -"#$%&'()*+,-./012345 -#$%&'()*+,-./0123456 -$%&'()*+,-./01234567 -%&'()*+,-./012345678</programlisting> - - <para>Para más pruebas de la impresora, intente descargar - programas más largos (para impresoras basadas en un - lenguaje) o ejecutar &man.lptest.1; con diferentes opciones. Por - ejemplo <command>lptest 80 60</command> producirá 60 - líneas de 80 caracteres cada una.</para> - - <para>Si la impresora no funcionó, vea la sección <link - linkend="printing-troubleshooting">Resolución de - Problemas</link>.</para> - </sect4> - </sect3> - </sect2> </sect1> - - <sect1 id="printing-advanced"> - <title>Configuración Avanzada de una Impresora</title> - - <para>Esta sección describe el uso de filtros para formatos - especiales, encabezados de página, impresión en red, y - restricción de uso de la impresora por cuenta.</para> - - <sect2 id="printing-advanced-filter-intro"> - <title>Filtros</title> - <indexterm><primary>filtros de impresión</primary></indexterm> - - <para>Aun cuando <application>LPD</application> maneja con protocolos - de red, controles de acceso, requisiciones y otros aspectos de la - impresión, la mayor parte del trabajo <emphasis>real</emphasis> - se lleva a cabo por los filtros. Los Filtros son programas que se - comunican con la impresora y controlan las dependendcias de su - dispositivo y requerimientos especiales. En el ejemplo de la impresora - simple, instalamos un muy sencillo filtro de texto plano—un ejemplo - extremadamente sencillo que debiese trabajar con la mayoría de - las impresoras (en la sección <link - linkend="printing-textfilter">Instalando un Filtro de Texto</link>). - </para> - - <para>De cualquier manera, para tomar ventaja de la conversión de - formatos, cuentas de impresión, trucos específicos de las - impresoras y demás, es importante saber como trabajan los filtros. - En virtud de que todos estos aspectos son la responsabilidad de estos - filtros. Y la mala noticia es, que la mayor parte del tiempo - <emphasis>usted</emphasis> debe proveerse de estos filtros. La buena - noticia es normalmente estos ya existen disponibles; y cuando no, - son sencillos de escribir.</para> - - <para>FreeBSD tambié cuenta con un - <filename>/usr/libexec/lpr/lpf</filename>, que trabaja con muchas - impresoras que pueden imprimir texto plano. (Maneja caracteres de - regreso y tabulador en el fichero, así como conteo, pero se - puede decir que eso es todo). Existen también una gran - cantidad de filtros y componentes de estos, disponibles en la - Colección de Ports de FreeBSD.</para> - - <para>He aqui lo que encontrará en esta sección:</para> - - <itemizedlist> - <listitem> - <para>La sección <link - linkend="printing-advanced-filters">Como Trabajan los Filtros</link> - intenta dar un repaso general al papel que juegan los filtros en el - proceso de impresión. Es importante que lea esta - sección para ver que sucede <quote>tras bambalinas</quote> - cuando <application>LPD</application> usa filtros. Este conocimiento - puede ayudarle a anticiparse y resolver problemas que puede - encontrar cuando instala más y más filtros en cada - impresora.</para> - </listitem> - - <listitem> - <para>Normalmente <application>LPD</application> espera poder imprimir - texto plano en todas las impresoras. Esto puede representar un - problema para las impresoras PostScript (o que manejen otro lenguaje - de impresión), las cuales no pueden imprimir texto plano - directamente. La sección <link - linkend="printing-advanced-if-conversion">Acomodando Trabajos de - Texto Plano en Impresoras PostScript</link> le indica que debe de - hacer si se le presenta este problema. Es importante que lea esta - sección si usted cuenta con una impresora PostScript.</para> - </listitem> - - <listitem> - <para>PostScript es un formato de salida muy popular. Incluso algunas - personas (yo, incluido) escriben código PostScript - directamente. Pero las impresoras PostScript son caras. La - sección <link - linkend="printing-advanced-ps">Simulando PostScript en Impresoras - No-PostScript</link> le indica como puede hacer, para que una - impresora no-PostScript, acepte e imprima datos PostScript. - Es recomendable que lea esta sección si cuenta con una - impresora <emphasis>no-PostScript</emphasis>.</para> - </listitem> - - <listitem> - <para>La sección <link - linkend="printing-advanced-convfilters">Filtros de - Conversión</link>, le indica la forma en que puede - automatizar la conversión de ciertos formatos - específicos de ficheros, tal como gráficos o - datos de un determinado tipo, a un formato que la impresora - puede entender. Después de leer esta sección usted - podrá configurar su impresora de tal forma que los - usuarios puedan teclear <command>lpr -t</command> para imprimir - datos troff o <command>lpr -d</command> para imprimir datos de tipo - TeX DVI, o bien <command>lpr -v</command> para imprimir datos de - imagen y así sucesivamente. Recomiendo la lectura de esta - sección.</para> - </listitem> - - <listitem> - <para>La sección <link linkend="printing-advanced-of"> - Filtros de Salida</link> explica todo acerca de las utilidades - que no son muy usadas de <application>LPD</application>: filtros - de salida. A menos que usted haya habilitado la impresión de - páginas de encabezado (vea <link - linkend="printing-advanced-header-pages">Páginas de - Encabezado</link>), puede saltar toda esta sección.</para> - </listitem> - - <listitem> - <para>La sección <link linkend="printing-advanced-lpf">lpf: - Un Filtro de Texto</link> detalla el uso de <command>lpf</command>, - un sencillo filtro de texto, para impresoras de matriz de puntos (e - impresoras laser que actuan como estas) que viene con FreeBSD. Si - usted necesita una forma rápida de tener un contador de - trabajos de impresión para texto plano, o bien si tiene una - impresora que al ver caracteres de regreso (backspace) comienza a - echar humo, definitivamente debe considerar <command>lpf</command> - como su alternativa.</para> - </listitem> - </itemizedlist> - - <sect3 id="printing-advanced-filters"> - <title>Como Trabajan los Filtros</title> - - <para>Como se menciono anteriormente, un filtro es un programa ejecutable - que se inicia por <application>LPD</application>, para manejar el - dispositivo dependiente, responsable de la comunicación con la - impresora.</para> - - <para>Cuando <application>LPD</application> desea imprimir un trabajo, - inicia un programa filtro. Establece como entrada estandar del filtro - al fichero, y a la impresora como salida estandar, y como error - estandard al fichero log (indicado con la cracterística - <literal>lf</literal>, en el fichero <filename>/etc/printcap</filename> - o por default como <filename>/dev/console</filename>).</para> - - <indexterm> - <primary><command>troff</command></primary> - </indexterm> - <para>Cual filtro debe ser iniciado por <application>LPD</application> y - con que argumentos, depende en lo especificado en el fichero - <filename>/etc/printcap</filename> y los argumentos que hayan sido - utilizados por el usuario al momento de usar en la línea de - comandos: &man.lpr.1;. Por ejemplo, si el usuario teclea - <command>lpr -t</command>, <application>LPD</application> - iniciará el filtro para ficheros troff, listado en las - características <literal>tf</literal> para la impresora - destino. Si el usuario desea imprimir texto plano iniciará - el filtro <literal>if</literal> (esto casi es así, para mayor - información, vea la sección <link - linkend="printing-advanced-of">Filtros de Salida</link>).</para> - - <para>Existen tres tipos de filtros que puede declarar en el fichero - <filename>/etc/printcap</filename>:</para> - - <itemizedlist> - <listitem> - <para>El <emphasis>filtro de texto</emphasis>, erroneamente llamado - <emphasis>filtro de entrada</emphasis> en la documentación - de <application>LPD</application>, este se encarga de manejar la - impresión de texto simple. Piense en este como en el - filtro por default. <application>LPD</application> espera que - todas las impresoras puedan imprimir texto plano y es el - filtro de texto, el que se encarga de manejar los caracteres de - retroceso y tabulador, de tal forma que la impresora no se - confunda. Si en su sistema se debe llevar un conteo de - impresiones, el filtro de texto también debe llevar un - conteo de páginas impresas, normalmente al llevar la - cuenta de las líneas impresas y comparandolas con el - numero de líneas soportadas por página. El filtro - de texto se comienza con los siguientes argumentos: - - <cmdsynopsis> - <command>nombre-del-filtro</command> - <arg>-c</arg> - <arg choice="plain">-w<replaceable>anchura</replaceable></arg> - <arg choice="plain">-l<replaceable>longitud</replaceable></arg> - <arg choice="plain">-i<replaceable>sangrado</replaceable></arg> - <arg choice="plain">-n <replaceable>login</replaceable></arg> - <arg choice="plain">-h <replaceable>host</replaceable></arg> - <arg choice="plain"><replaceable>fichero-act</replaceable></arg> - </cmdsynopsis> - - donde - - <variablelist> - <varlistentry> - <term><option>-c</option></term> - - <listitem> - <para>aparece si el trabajo se envio utilizando <command>lpr - -l</command></para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable>anchura</replaceable></term> - - <listitem> - <para>es el valor de la característica - <literal>pw</literal> (ancho de página), indicado en - <filename>/etc/printcap</filename>, por default se usa - un valor de 132</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable>longitud</replaceable></term> - - <listitem> - <para>es el valor de la característica - <literal>pl</literal> (longitud de página), por - default su valor es 66</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable>sangrado</replaceable></term> - - <listitem> - <para>se refiere a los espacios que se considerarán para - <command>lpr -i</command>, por default es 0.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable>login</replaceable></term> - - <listitem> - <para>es el nombre de la cuenta del usuario que imprime - el trabajo</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable>host</replaceable></term> - - <listitem> - <para>es el nombre del host, del cual se ha enviado el trabajo - de impresión</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable>fichero-act</replaceable></term> - - <listitem> - <para>es el nombre del fichero contador, de - la característica <literal>af</literal>.</para> - </listitem> - </varlistentry> - </variablelist> - </para> - </listitem> - - <indexterm> - <primary>impresora</primary> - <secondary>filtros</secondary> - </indexterm> - <listitem> - <para>Un <emphasis>filtro de conversión</emphasis> convierte - un formato específico, a uno que la impresora puede - plasmar en un papel. Por ejemplo, datos de tipo ditroff no pueden - imprimirse directamente, pero puede instalar un filtro de - conversión para ficheros ditroff, de tal forma que los - datos ditroff se conviertan a un formato que entiende la - impresora. La sección <link - linkend="printing-advanced-convfilters">Filtros de - Conversión</link> explica todo lo que usted necesita saber - sobre ellos. Los filtros de conversión también - requieren de llevar un conteo, si usted requiere de este - control. Los filtros de conversión se inicializan con - estos argumentos: - - <cmdsynopsis> - <command>nombre-del-filtro</command> - <arg - choice="plain">-x<replaceable>ancho-pixel</replaceable></arg> - <arg choice="plain">-y<replaceable>alto-pixel</replaceable></arg> - <arg choice="plain">-n <replaceable>login</replaceable></arg> - <arg choice="plain">-h <replaceable>host</replaceable></arg> - <arg choice="plain"><replaceable>fichero-act</replaceable></arg> - </cmdsynopsis> - - donde <replaceable>ancho-pixel</replaceable> es el valor de la - característica <literal>px</literal> (default 0) y - <replaceable>alto-pixel</replaceable> es el valor de la - característica <literal>py</literal> (default 0).</para> - </listitem> - - <listitem> - <para>El <emphasis>filtro de salida</emphasis> es usado solamente si - no existe un filtro de texto, o bien si las páginas de - encabezado están habilitadas. En mi experiencia, los - filtros de salida raramente se utilizan. La sección <link - linkend="printing-advanced-of">Filtros de Salida</link> describe - el uso de estos. Sólo existen dos argumentos: - - <cmdsynopsis> - <command>nombre-filtro</command> - <arg choice="plain">-w<replaceable>ancho</replaceable></arg> - <arg choice="plain">-l<replaceable>largo</replaceable></arg> - </cmdsynopsis> - - los cuales son idénticos a los argumentos - <option>-w</option> y <option>-l</option> de los filtros de - texto.</para> - </listitem> - </itemizedlist> - - <para>La <emphasis>salida</emphasis> de los filtros debe ser con - el siguiente resultado:</para> - - <variablelist> - <varlistentry> - <term>exit 0</term> - - <listitem> - <para>Esto es si el resultado de la impresión es - satisfactorio.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>exit 1</term> - - <listitem> - <para>Si el filtro falló en la impresión, pero - desea que <application>LPD</application> intente de nuevo - el trabajo de impresión. <application>LPD</application> - reiniciará el filtro si sale con esta clave.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>exit 2</term> - - <listitem> - <para>Si el filtro falla imprimiendo el fichero y no desea que - <application>LPD</application> lo intente de nuevo. - <application>LPD</application> desechará el fichero.</para> - </listitem> - </varlistentry> - </variablelist> - - <para>El filtro de texto - <filename>/usr/libexec/lpr/lpf</filename> que viene con FreeBSD, - toma ventaja de los argumentos de ancho y largo, para determinar - cuando alimentar la impresora y como llevar el conteo de uso de la - impresora. Utiliza el host y login, así como el fichero de - conteo, para llevar el control de este registro.</para> - - <para>Si usted esta buscando adquirir filtros, verifique que ellos son - compatibles con LPD. Si lo son, deberan soportar los argumentos - descritos anteriormente. Si usted planea escribir filtros para - uso general, entonces creelos pensando en soportar estos - argumentos y códigos de salida.</para> - </sect3> - - <sect3 id="printing-advanced-if-conversion"> - <title>Acomodando Trabajos de Texto Plano en Impresoras PostScript</title> - <indexterm><primary>trabajos de impresión</primary></indexterm> - - <para>Si usted es el único usuario de su computadora e impresora - PostScript (u otro lenguaje de impresoras), y promete nunca enviar - texto plano a su impresora o bien hacer uso de algunos programas que - probablemente envien texto plano a su impresora, entonces usted no - debe preocuparse por leer esta sección.</para> - - <para>Pero, si usted desea enviar tanto texto plano, como PostScript a - su impresora, entonces es altamente recomendable que prepare la - configuración de su impresora. Para efecto de hacer esto, - contamos con el filtro de texto, para detectar si los trabajos que - se han mandado son de texto plano o PostScript. Todos los trabajos de - tipo PostScript, deben comenzar con <literal>%!</literal> (para otros - lenguajes de impresión, vea la documentación de su - impresora). Si esos son los dos primeros caracteres de su trabajo, - entonces se considera PostScript y puede pasar el resto del trabajo de - forma directa. Si esos no son los primeros dos caracteres, entonces el - filtro hará la conversión del texto a PostScript e - imprimirá el resultado.</para> - - <para>¿Cómo se hace esto?</para> - - <indexterm> - <primary>impresora</primary> - <secondary>serial</secondary> - </indexterm> - <para>Si usted cuenta con una impresora serial, una buena forma de hacer - esto es instalando <command>lprps</command>. <command>lprps</command> - es un filtro de impresión PostScript que lleva a cabo una - comunicación de dos vías con la impresora. Actualiza - el fichero de estatus de la impresora, por medio de información - actualizada, de tal forma que los usuarios y administradores pueden - ver exactamente el estado que guarda la impresora (tal como - <errorname>toner bajo</errorname> o - <errorname>papel atorado</errorname>). Pero más importante - es el programa que incluye llamado <command>psif</command>, el cual - detecta si el trabajo que se ha enviado es texto plano, con lo cual - llama a <command>textps</command> (otro programa que viene con - <command>lprps</command>), para convertir el texto plano a - PostScript. Posteriormente utiliza <command>lprps</command> para - enviar el trabajo a la impresora.</para> - - <para>El programa <command>lprps</command> es parte de la - Colección de Ports de FreeBSD (vea la sección <link - linkend="ports">La Colección de Ports</link>). Claro esta, que - usted puede descargar, compilar e instalarlo. Una vez que instale - <command>lprps</command>, simplemente especifique la ruta al programa - <command>psif</command> que a su vez es parte de - <command>lprps</command>. Si ha instalado <command>lprps</command> - de la <link linkend="ports">Colección de Ports</link>, - añada lo siguiente, en la parte correspondiente a su - impresora Serial-PostScript, en el fichero - <filename>/etc/printcap</filename>:</para> - - <programlisting>:if=/usr/local/libexec/psif:</programlisting> - - <para>También deberá especificar la característica - <literal>rw</literal>; que le indica a <application>LPD</application> - abrir la impresora en modo de lectura-escritura.</para> - - <para>Si usted cuenta con una impresora PostScript, conectada a un puerto - paralelo (y por lo tanto no cuenta con la comunicación de dos - vías con la impresora, que <command>lprps</command> requiere), - puede utilizar el siguiente script de shell como filtro de texto: - </para> - - <programlisting>#!/bin/sh -# -# psif - Imprime PostScript o texto plano en impresoras PostScript -# Script version; NO la version que viene con lprps -# Instalado en /usr/local/libexec/psif -# - -read first_line -first_two_chars=`expr "$first_line" : '\(..\)'` - -if [ "$first_two_chars" = "%!" ]; then - # - # Trabajo PostScript, imprimirlo. - # - echo "$first_line" && cat && printf "\004" && exit 0 - exit 2 -else - # - # Texto Plano, convertirlo e imprimirlo. - # - ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0 - exit 2 -fi</programlisting> - - <para>En este script, <command>textps</command> es un programa que hemos - instalado por separado, para convertir texto plano a PostScript. Usted - puede utilizar cualquier cualquier programa de conversión de - texto plano a PostScript que desee. La <link - linkend="ports">Colección de Ports</link> de FreeBSD incluye un - programa muy completo llamado <literal>a2ps</literal> que quizás - desee investigar.</para> - </sect3> - - <sect3 id="printing-advanced-ps"> - <title>Simulando PostScript en Impresoras No-PostScript</title> - <indexterm> - <primary>PostScript</primary> - <secondary>emulación</secondary> - </indexterm> - <indexterm> - <primary>Ghostscript</primary></indexterm> - <para>PostScript es el estandar <emphasis>por excelencia</emphasis> en - impresiones de alta calidad. Aunque en realidad PostScript resulta - ser un estandar algo <emphasis>caro</emphasis>. Afortunadamente la - Empresa Alladin, cuenta con un emulador PostScript, llamado - <application>Ghostscript</application> que corre bajo FreeBSD. - Ghostscript puede leer la mayoría de los ficheros PostScript - y volcarlos en una gran variedad de dispositivos, incluyendose gran - variedad de impresoras no-PostScript. Al instalar Ghostscript y usando - un filtro de texto especial para su impresora, puede hacer que su - impresora no-PostScript actue como una impresora PostScript real. - </para> - - <para>Ghostscript se encuentra en la Colección de Ports de FreeBSD - por lo que puede realizar la instalación desde este medio. - También puede descargarlo, compilarlo e instalarlo de una - manera fácil.</para> - - <para>Para efecto de simular PostScript, contamos con el filtro de texto - que detecta si se esta imprimiendo un fichero PostScript. Si no es - así, el filtro pasará el trabajo directamente a la - impresora, de otra forma utilizará Ghostscript para convertir - primero el fichero a un formato que la impresora entienda.</para> - - <para>Aqui tenemos un ejemplo: el siguiente script es un filtro de - texto para impresoras Hewlett Packard DeskJet 500. Para otras - impresoras, substituya el argumento <option>-sDEVICE</option> del - comando <command>gs</command> (Ghostscript). Teclee <command>gs - -h</command> para obtener una lista de todos los dispositivos - soportados por Ghostscript en su sistema).</para> - - <programlisting>#!/bin/sh -# -# ifhp - Impresion simulada-Ghostscript PostScript en una DeskJet 500 -# Instalada en /usr/local/libexec/hpif - -# -# Trate a LF como CR+LF: -# -printf "\033&k2G" || exit 2 - -# -# Read first two characters of the file -# -read first_line -first_two_chars=`expr "$first_line" : '\(..\)'` - -if [ "$first_two_chars" = "%!" ]; then - # - # Se trata de PostScript; use Ghostscript para convertir e imprimir. - # - # Note que los ficheros PostScript son , de hecho, programas interpretados, - # y esos programas se permiten escribir en la salida estandar, lo que puede - # confundir la salida impresa. De tal forma que redireccionaremos la salida - # estandar a error estandar, y crearemos una clave de salida 3, para la - # salida estandar, y haremos que Ghostscript escriba su salida a esta. - # Un ejercicio para el lector astuto: capture la salida del error estandar - # de Ghostscript y envielo por correo de regreso al usuario original, que - # genero el trabajo de impresion. - # - exec 3>&1 1>&2 - /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \ - -sOutputFile=/dev/fd/3 - && exit 0 - - # - /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 -sOutputFile=- - \ - && exit 0 -else - # - # Texto plano o PCL de HP, asi que solo vamos a imprimirlo directamente; - # permita la alimentacion de forma al final, para expulsar la ultima - # pagina. - # - echo $first_line && cat && printf "\033&l0H" && -exit 0 -fi - -exit 2</programlisting> - - <para>Finalmente, necesita notificar a <application>LPD</application> - de la característica <literal>if</literal>, que corresponde - al filtro a utilizar:</para> - - <programlisting>:if=/usr/local/libexec/ifhp:</programlisting> - - <para>Y eso es todo. Puede teclear <command>lpr texto.plano</command> y - <filename>lpr cualquier.ps</filename> y ambos deben imprimirse - exitosamente.</para> - </sect3> - - <sect3 id="printing-advanced-convfilters"> - <title>Filtros de Conversión</title> - - <para>Una vez que se ha completado la configuración descrita en - la sección <link - linkend="printing-simple">Configuración Simple de - una Impresora</link>, probablemente lo primero que deba hacer es - instalar filtros de conversión para su formato de fichero - favorito (aparte de text plano ASCII).</para> - - <sect4> - <title>¿Por qué Instalar Filtros de - Conversión?</title> - <indexterm> - <primary>TeX</primary> - <secondary>impresión de ficheros dvi</secondary> - </indexterm> - - <para>Los filtros de conversión sirven para instalar de una - manera sencilla varios tipos de formatos especiales. Como ejemplo, - suponga que requiere imprimir un buen numero de ficheros - desarrollados con el sistema de escritura TeX, y contamos con una - impresora PostScript. Cada vez que generemos un fichero DVI desde - TeX, no podremos imprimirlo directamente hasta que hagamos una - conversión de este a PostScript. La secuencia de comandos - a seguir es algo así:</para> - - <screen>&prompt.user; <userinput>dvips fichero-prueba.dvi</userinput> -&prompt.user; <userinput>lpr fichero-prueba.ps</userinput></screen> - - <para>Al instalar un filtro de conversión, podemos omitir - llevar a cabo la conversión manual, y permitir que - <application>LPD</application> se haga cargo por nosotros. Ahora, - cada vez que generemos un fichero DVI, sólo estaremos a - un paso de su impresión:</para> - - <screen>&prompt.user; <userinput>lpr -d fichero-prueba.dvi</userinput></screen> - - <para>Con esto le hemos indicado a <application>LPD</application> que - haga la conversión del fichero DVI. Esto se lleva a cabo - por medio de la opción <option>-d</option>. La sección - <link linkend="printing-lpr-options-format">Opciones de Formato y - Conversión</link> enumera las opciones de conversión. - </para> - - <para>Por cada una de las opciones que desea que una impresora - reconozca, instale un <emphasis>filtro de - conversión</emphasis> y señale su ruta en el fichero - <filename>/etc/printcap</filename>. Un filtro de conversión - es como el filtro de texto usado en la configuración de una - impresora simple (vea la sección <link - linkend="printing-textfilter">Instalando un Filtro de Texto</link> - para una referencia) excepto de que en lugar de imprimir texto - plano, el filtro convierte el fichero a un formato que la impresora - puede entender.</para> - </sect4> - - <sect4> - <title>¿Qué Filtros de Conversión Debo - Instalar?</title> - - <para>Usted debe instalar los filtros de conversión que vaya a - necesitar. Si imprime gran cantidad de documentos DVI, es - recomendable que instal un filtro de conversión para DVI. - Si cuenta con bastantes ficheros troff por imprimir, entonces - un filtro troff sería una buena idea.</para> - - <para>En la siguiente tabla encontrará un resúmen de - los filtros con que trabaja <application>LPD</application>, un - ejemplo de su entrada en <filename>/etc/printcap</filename> y - como hacer uso de estos con el comando <command>lpr</command> : - </para> - - <informaltable frame="none"> - <tgroup cols="3"> - <thead> - <row> - <entry>Tipo de Fichero</entry> - <entry>Característica <filename>/etc/printcap</filename></entry> - <entry>Opción <command>lpr</command></entry> - </row> - </thead> - - <tbody> - <row> - <entry>cifplot</entry> - <entry><literal>cf</literal></entry> - <entry><option>-c</option></entry> - </row> - - <row> - <entry>DVI</entry> - <entry><literal>df</literal></entry> - <entry><option>-d</option></entry> - </row> - - <row> - <entry>plot</entry> - <entry><literal>gf</literal></entry> - <entry><option>-g</option></entry> - </row> - - <row> - <entry>ditroff</entry> - <entry><literal>nf</literal></entry> - <entry><option>-n</option></entry> - </row> - - <row> - <entry>FORTRAN texto</entry> - <entry><literal>rf</literal></entry> - <entry><option>-f</option></entry> - </row> - - <row> - <entry>troff</entry> - <entry><literal>rf</literal></entry> - <entry><option>-f</option></entry> - </row> - - <row> - <entry>raster</entry> - <entry><literal>vf</literal></entry> - <entry><option>-v</option></entry> - </row> - - <row> - <entry>texto plano</entry> - <entry><literal>if</literal></entry> - <entry>ninguna, <option>-p</option>, o - <option>-l</option></entry> - </row> - </tbody> - </tgroup> - </informaltable> - - <para>En nuestro ejemplo, el uso de <command>lpr -d</command> indica - que la impresora requiere de la característica - <literal>df</literal>, en su entrada del fichero - <filename>/etc/printcap</filename>.</para> - - <indexterm><primary>fortran</primary></indexterm> - <para>A pesar de lo que otros puedan opinar, formatos como texto - de FORTRAN o plot, son probablemnte obsoletos. A su gusto, usted - puede encontrar nuevos usos de estos formatos, así como a - cualquier otro con el simple hecho de instalar los filtros - adecuados. Por ejemplo, supongamos que desea imprimir ficheros de - tipo Printerleaf (que son ficheros generados por el programa de - promoción de escritorio Interleaf) de forma directa, pero - que nunca imprime ficheros plot. Podría instalar un filtro - de conversión de Printerleaf bajo la característica - <literal>gf</literal> y posteriormente educar a sus usuarios a - que utilicen el comando <command>lpr -g</command> para llevar a - cabo <quote>impresiones de ficheros Printleaf</quote>.</para> - </sect4> - - <sect4> - <title>Instalando Filtros de Conversión</title> - - <para>Considerando que los filtros de conversión son programas - que usted instala independientemente de la instalación base - de FreeBSD, probablemente el mejor lugar para colocarlos - sería bajo el directorio <filename>/usr/local</filename>. - El directorio <filename>/usr/local/libexec</filename> es un - lugar común, en virtud de que estos son programas especiales - que sólo serán ejecutados por - <application>LPD</application>; los usuarios comunes no - necesitarán ejecutarlos nunca.</para> - - <para>Para habilitar un filtro de conversión, deberá - especificar su ruta bajo la característica adecuada, en la - entrada de la impresora correspondiente en el fichero - <filename>/etc/printcap</filename>.</para> - - <para>En nuestro ejemplo, añadiremos el filtro de - conversión DVI, para la impresora llamada - <literal>bamboo</literal>. He aqui un ejemplo del fichero - <filename>/etc/printcap</filename> que hemos estado utilizando, - con la nueva característica <literal>df</literal>, para - la impresora <literal>bamboo</literal>.</para> - - <programlisting># -# Fichero /etc/printcap para host rose - añadiendo df a bamboo -# -rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple: - -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:\ - :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\ - :if=/usr/local/libexec/psif:\ - :df=/usr/local/libexec/psdf:</programlisting> - - <para>El filtro DVI es un script de shell llamado - <filename>/usr/local/libexec/psdf</filename>. Aqui presentamos el - script:</para> - - <programlisting>#!/bin/sh -# -# psdf - Filtro de impresion DVI a PostScript -# Instalado en /usr/local/libexec/psdf -# -# Llamado por lpd cuando el usuario ejecuta lpr -d -# -exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"</programlisting> - - <para>Este script ejecuta <command>dvips</command> en modo de filtro - (la opción <option>-f</option>) con la entrada estandar, que - es el trabajo a imprimir. Posteriormente inicia el filtro de - impresión PostScript <command>lprps</command> (vea la - sección <link - linkend="printing-advanced-if-conversion">Acomodando Trabajos de - Texto Plano en Impresoras PostScript</link>), con las opciones que - <application>LPD</application> haya pasado al script. El comando - <command>lprps</command> hará uso de esas opciones para - llevar la cuenta de las páginas impresas.</para> - </sect4> - - <sect4> - <title>Más Ejemplos de Filtros de Conversión</title> - - <para>Considerando que no existe una serie de pasos establecida, para - instalar filtros de conversión, me permito mostrar algunos - ejemplos más. Puede usarlos tal como aparecen, si es que se - ajustan a sus necesidades.</para> - - <para>Este ejemplo es de un filtro de conversión raster - (bueno, de hecho se trata de un fichero GIF), para una impresora - Hewlett Packard LaserJet III-Si:</para> - - <programlisting>#!/bin/sh -# -# hpvf - Convierte ficheros GIF a HP/PCL, posteriormente los imprime -# Instalado en /usr/local/libexec/hpvf - -PATH=/usr/X11R6/bin:$PATH; export PATH -giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \ - && exit 0 \ - || exit 2</programlisting> - - <para>Esto trabaja convirtiendo el fichero GIF a cualquier tipo de - fichero mapa portable, y conviritendo eso a un mapa en escala de - grises, y ese mapa de regreso a un fichero portable de mapa de - bits, y finalmente eso a datos compatibles con HP/PCL, entendible - por la impresora LaserJet.</para> - - <para>Aqui esta un ejemplo del fichero - <filename>/etc/printcap</filename> usando el filtro anterior, con la - impresora mencionada.</para> - <programlisting># -# Fichero /etc/printcap para el host orchid -# -teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ - :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ - :if=/usr/local/libexec/hpif:\ - :vf=/usr/local/libexec/hpvf:</programlisting> - - <para>El siguiente script es un filtro de conversión de datos de - tipo troff desde un sistema groff, para la impresora PostScript - denominada <literal>bamboo</literal>:</para> - <programlisting>#!/bin/sh -# -# pstf - Convierte datos de troff tipo groff a PS, y los imprime. -# Instalado en /usr/local/libexec/pstf -# -exec grops | /usr/local/libexec/lprps "$@"</programlisting> - - <para>El script de arriba, nuevamente hace uso del comando - <command>lprps</command>, para manejar la comunicación con - la impresora. Si la impresora se encontrase en un puerto paralelo, - usariamos el siguiente script:</para> - <programlisting>#!/bin/sh -# -# pstf - Convierte datos groff a PS, y los imprime. -# Instalado en /usr/local/libexec/pstf -# -exec grops</programlisting> - - <para>Eso es todo. Aqui presentamos la entrada necesaria en - <filename>/etc/printcap</filename> para habilitar el filtro:</para> - - <programlisting>:tf=/usr/local/libexec/pstf:</programlisting> - - <para>Aqui presentamos un ejemplo que puede hacer que los viejos - usuarios de FORTRAN se ruboricen. Es un filtro de texto para - FORTRAN, usando impresoras que pueden imprimir directamente texto - plano. Lo instalaremos para la impresora <literal>teak</literal>: - </para> + <sect1 id="printing-advanced"> + <title>Configuración avanzada de impresoras</title> - <programlisting>#!/bin/sh -# -# hprf - Filtro de Texto FORTRAN para LaserJet 3si: -# Instalado en /usr/local/libexec/hprf -# + <para>Pendiente de traducción</para> -printf "\033&k2G" && fpr && printf "\033&l0H" && - exit 0 -exit 2</programlisting> - - <para>Y añadiremos esta línea al fichero - <filename>/etc/printcap</filename> para la impresora - <literal>teak</literal>, para efecto de habilitar el filtro:</para> - - <programlisting>:rf=/usr/local/libexec/hprf:</programlisting> - - <para>Aqui presentamos el último ejemplo que puede resultar algo - complicado. Vamos a añadir un filtro DVI para la impresora - LaseJet <literal>teak</literal> comentada anteriormente. Primero, la - parte sencilla: actualizaremos <filename>/etc/printcap</filename> - con la ubicación del filtro DVI:</para> - - <programlisting>:df=/usr/local/libexec/hpdf:</programlisting> - - <para>Ahora la parte complicada: crar el filtro. Para eso, vamos - a necesitar un programa de conversión de DVI-a-LaserJet/PCL. - La Colección de Ports de FreeBSD (vea <link - linkend="ports">La Colección de Ports</link>) cuenta con - uno, el nombre del paquete es: <command>dvi2xx</command>. Al - instalar este programa, nos brinda la funcionalidad que buscamos, - <command>dvilj2p</command>, el cual convierte ficheros DVI a - ficheros compatibles con LaserJet IIp, LaserJet III y LaserJet - 2000 y códigos compatibles.</para> - - <para>El programa <command>dvilj2p</command> hace que el filtro - <command>hpdf</command> sea más complejo, en virtud de que - <command>dvilj2p</command> no puede leer desde la entrada - estandar. Este desea trabajar desde un nombre de fichero. Y lo - que es peor, es que el nombre del fichero debe contar con la - terminación <filename>.dvi</filename>, de tal forma que - usar <filename>/dev/fd/0</filename> como entrada estandar representa - un problema. Esto lo podremos solucionar, creando un enlace - (simbólico) de un fichero temporal (uno que su tenga como - extensión <filename>.dvi</filename>) a - <filename>/dev/fd/0</filename>, y por tanto forzando a - <command>dvilj2p</command> a leer la entrada estandar.</para> - - <para>El único punto negativo que nos queda por resolver, es - que no podemos utilizar <filename>/tmp</filename> para el enlace - temporal. Los enlaces simbólicos son propiedad del grupo y - usuario <username>bin</username>. El filtro de ejecuta como usuario - <username>daemon</username>. Y el directorio - <filename>/tmp</filename> cuenta con el bit <quote>pegajoso</quote> - activado. El filtro puede crear el enlace, pero no podrá - limpiarlo una vez que termine y eliminarlo, ya que pertenece a un - usuario diferente.</para> - - <para>En lugar de esto, el filtro creará el enlace - simbólico en el directorio de trabajo actual, el cual - será el directorio de la cola de impresión - (especificado en <filename>/etc/printcap</filename> por la - característica <literal>sd</literal>). Este lugar es - perfecto para que los filtros hagan su trabajo, especialmente que - aqui existe más espacio (algunas veces) en disco duro, que - bajo el directorio <filename>/tmp</filename>.</para> - - <para>Finalmente, aqui presentamos el filtro:</para> - - <programlisting>#!/bin/sh -# -# hpdf - Impresion de datos DVI en una impresora HP/PCL -# Instalado en /usr/local/libexec/hpdf - -PATH=/usr/local/bin:$PATH; export PATH - -# -# Definir una funcion para limpiar nuestros ficheros temporales. Estos existen -# en el directorio de trabajo actual, el cual servira para la cola de impresion de -# la impresora. -# -cleanup() { - rm -f hpdf$$.dvi -} - -# -# Definir funcion para el manejo de errores fatales: imprimir un mensaje dado y salir -# con codigo de salida 2. Al salir con 2, le indica a LPD que no intente la impresion -# de nuevo. -# -fatal() { - echo "$@" 1>&2 - cleanup - exit 2 -} - -# -# Si el usuario elimina el trabajo, LPD enviara un SIGINT, para que SIGINT -# (y algunas otros avisos) limpien despues de nosotros. -# -trap cleanup 1 2 15 - -# -# Asegurarse de que no estamos creando un conflicto con ficheros existentes. -# -cleanup - -# -# Crear el enlace de la entrada DVI a la entrada estandar (el fichero a imprimir). -# -ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0" - -# -# Hacer LF = CR+LF -# -printf "\033&k2G" || fatal "Cannot initialize printer" - -# -# Convertir e imprimir. Regresar valor de dvilj2p no parece my confiable, -# asi que es ignorado. -# -dvilj2p -M1 -q -e- dfhp$$.dvi - -# -# Limpiar y salir -# -cleanup -exit 0</programlisting> - </sect4> - - <sect4 id="printing-advanced-autoconv"> - <title>Conversión Automática: Una Alternativa A Los Filtros - De Conversión</title> - - <para>Todos estos filtros de conversión realizan una gran labor - en pro de sus labores de impresión, pero con el inconveniente - de que cada usuario debe especificar cual filtro es el que se debe - utilizar (cuando se invoca el comando &man.lpr.1;). Si sus usarios - no son lo que podemos llamar aficionados a la computación, el - especificar que filtro utilizar puede volverse algo molesto. Y lo - que es peor, el uso de un filtro inadecuado puede causar que su - impresora termine imprimiendo cientos de hojas de papel de manera - incorrecta.</para> - - <para>En lugar de instalar filtros de conversión, quizás - le interese intentar que su filtro de texto (dado que es el filtro - por default) determine que tipo de fichero se esta enviando a - imprimir y automáticamente ejecute el filtro adecuado. En - este caso, herramientas como <command>file</command> pueden ser - de mucha utilidad. Claro esta, puede que algunos tipos de ficheros - puede ser difícil determinar de que tipo son, pero siempre - puede contar con filtros especiales para ellos.</para> - - <indexterm><primary>apsfilter</primary></indexterm> - <indexterm> - <primary>impresora</primary> - <secondary>filtros</secondary> - <tertiary>apsfilter</tertiary> - </indexterm> - <para>La Colección de Ports de FreeBSD cuenta con un filtro de - texto que ejecuta de forma automática la conversión, - llamado <command>apsfilter</command>. Este puede detectar texto - plano, PostScript y ficheros DVI, ejecutar la conversión - adecuada e imprimir.</para> - </sect4> - </sect3> - - <sect3 id="printing-advanced-of"> - <title>Filtros de Salida</title> - - <para>El sistema de cola de impresión de - <application>LPD</application> soporta otro tipo de filtros, que - aun no hemos explicado aqui: un filtro de salida. Un filtro de - salida esta diseñado para imprimir texto plano - únicamente, como el filtro de texto, pero de una forma - más simplificada. Si usted esta usando un filtro de - salida pero no filtro de texto, entonces:</para> - - <itemizedlist> - <listitem> - <para><application>LPD</application> inicia el filtro de salida para - el trabajo completo, en lugar de hacerlo para cada fichero del - trabajo.</para> - </listitem> - - <listitem> - <para>Para el filtro de salida, <application>LPD</application> - no realiza un trabajo extra para identificar el comienzo o - el fin del trabajo.</para> - </listitem> - - <listitem> - <para>En el filtro de salida, <application>LPD</application> no - utiliza como argumento el nombre de usuario o host, por lo tanto - no esta diseñado para llevar un conteo por usuario. De - hecho, este sólo maneja dos argumentos:</para> - - <cmdsynopsis> - <command>nombre-filtro</command> - <arg choice="plain">-w<replaceable>ancho</replaceable></arg> - <arg choice="plain">-l<replaceable>largo</replaceable></arg> - </cmdsynopsis> - - <para>Donde <replaceable>ancho</replaceable> es tomado de la - característica <literal>pw</literal> y - <replaceable>largo</replaceable> es tomado de la - característica <literal>pl</literal>, para la impresora - en cuestión.</para> - </listitem> - </itemizedlist> - - <para>Es importante que no se deje seducir por la simplicidad del filtro - de salida. Si usted desea que cada fichero de un trabajo sea impreso - en una página diferente, el filtro de salida <emphasis>no - hará este trabajo</emphasis>. Utilice un filtro de texto - (también conocido como filtro de entrada); vea la sección - <link linkend="printing-textfilter">Instalando un Filtro de Texto - </link>. Mas allá, el filtro de salida es de hecho <emphasis> - más complicado</emphasis> en ese aspecto dado que examina la - cadena de bytes que se ha enviado, para buscar alguna marca especial y - enviarse señas él mismo, a nombre de - <application>LPD</application>.</para> - - <para>De cualquier forma, un filtro de salida es - <emphasis>necesario</emphasis> si usted desea páginas de - encabezado y requiere de enviar un secuencia de escape u otras - cadenas de inicialización para habilitar la impresión de - encabezados. (Aunque también es <emphasis>trivial</emphasis> si - desea cobrar de acuerdo a las páginas encabezado de cada - usuario, dado que <application>LPD</application> no otorga - información del usuario o host, al filtro de salida.)</para> - - <para>En una sola impresora, <application>LPD</application> permite el - uso tanto del filtro de salida como el filtro de texto. En cuyo caso, - <application>LPD</application> iniciará el filtro de salida - para imprimir las páginas de encabezado (vea la sección - <link linkend="printing-advanced-header-pages">Páginas de - Encabezado</link>) únicamente. Posteriormente - <application>LPD</application> espera que el filtro de salida se - <emphasis>detenga por sí mismo</emphasis> al enviarle dos - bytes al filtro: ASCII 031 seguido de ASCII 001. Cuando un filtro de - salida recibe estos dos bytes (031, 001), deberá pararse, - enviandose a sí mismo una señal - <literal>SIGSTOP</literal>. Una vez que <application>LPD</application> - ha terminado de ejecutar otros filtros, reiniciará el filtro de - salida, el enviarle una señal <literal>SIGCONT</literal>.</para> - - <para>Si existe un filtro de salida, pero <emphasis>no</emphasis> existe - un filtro de texto y <application>LPD</application> esta trabajando con - un trabajo en texto plano, <application>LPD</application> - utilizará el filtro de salida para hacer el trabajo. Como se - comento anteriormente, el filtro de salida imprimirá cada - fichero del trabajo en secuencia, sin intervención de - alimentación u otras ventajas con lo que al papel se refiere, y - seguramente que esto <emphasis>no</emphasis> es lo que usted desea. En - casi todos los casos usted necesitará un filtro de texto.</para> - - <para>El programa <command>lpf</command>, que comentamos anteriormente - como un filtro de texto, también es capaz de ejecutar un filtro - de salida. Si desea un trabajo rápido-y-sucio del filtro de - salida, pero no desea que se escriban bytes de detección, ni - envien códigos, puede usar <command>lpf</command>. - También puede incluir <command>lpf</command> en un script de - shell, para que controle cualquier código de - inicialización que la impresora requiera.</para> - </sect3> - - <sect3 id="printing-advanced-lpf"> - <title><command>lpf</command>: Un Filtro de Texto</title> - - <para>El programa <filename>/usr/libexec/lpr/lpf</filename> que viene - con los binarios de FreeBSD, como un filtro de texto (filtro de - entrada) que puede darle sangía a los trabajos (usando la - opción <command>lpr -i</command>), que permite el envío - literal de caracteres (con el comando <command>lpr -l</command>), - ajusta la posición de impresión para caracteres de - retroceso y tabulador, y contabiliza las páginas impresas. - También puede funcionar como un filtro de salida.</para> - - <para><command>lpf</command> se ajusta a la configuración de - gran cantidad de impresoras. Y aunque no tiene la habilidad de enviar - secuencias de inicialización a la impresora, es muy sencillo - escribir un script de shell para llevar a cabo la inicialización - y posteriormente ejecutar <command>lpf</command>.</para> - - <indexterm><primary>conteo de páginas</primary></indexterm> - <indexterm> - <primary>conteo</primary> - <secondary>impresora</secondary> - </indexterm> - <para>Para efecto de que <command>lpf</command> lleve un conteo correcto, - requiere que se tengan los valores adecuados de las - características <literal>pw</literal> y <literal>pl</literal>, - en el fichero <filename>/etc/printcap</filename>. En base a estos, - determina cuanto texto puede existir en una página y cuantas - páginas existen en el trabajo de un usuario. Para mayor - información al respecto, vea la sección <link - linkend="printing-advanced-acct">Contabilidad del Uso de la - Impresora</link>.</para> - </sect3> - </sect2> - - <sect2 id="printing-advanced-header-pages"> - <title>Páginas de Encabezado</title> - - <para>Si usted cuenta con <emphasis>gran</emphasis> cantidad de usuarios, - y todos imprimiendo en varias impresoras, entonces sería - conveniente considerar las <emphasis>páginas de - encabezado</emphasis> como un mal necesario.</para> - - <indexterm> - <primary>páginas titulares</primary> - <see>páginas encabezados</see> - </indexterm> - <indexterm><primary>páginas encabezados</primary></indexterm> - <para>Las páginas de encabezados, también conocidas como - <emphasis>titulares</emphasis> o - <emphasis>páginas de aviso</emphasis> identifican a quien - pertenece el trabajo enviado a imprimir, una vez que han sido - impresos. Normalmente estas son impresas en letras grandes y de color - negro remarcado (negritas), y quizás con bordes decorativos, de - tal forma que puedan distinguirse entre el resto de las páginas - enviadas a imprimir. Estas permiten a los usuarios localizar - rápidamente sus impresiones. El obvio lado negativo de estas - páginas es que se debe imprimir una hoja adicional, por cada - trabajo enviado a la impresora, su utilidad efímera, no dura - más que unos minutos, terminando en una bandeja de reciclaje. - (Note que las páginas de encabezado se imprimen con cada trabajo - enviado a la impresora, no con cada página impresa, de tal - manera que el deperdicio de papel no es tan grave.)</para> - - <para>El sistema <application>LPD</application> puede proveerle de las - páginas de encabezado de forma automática para sus - impresiones, <emphasis>si</emphasis> su impresora soporta de la - impresión de texto plano directamente. Si usted cuenta con una - impresora PostScript, necesitará un programa externo para generar - estas páginas; vea la sección <link - linkend="printing-advanced-header-pages-ps">Páginas de Encabezado - en Impresoras PostScript</link>.</para> - - <sect3 id="printing-advanced-header-pages-enabling"> - <title>Habilitando las Páginas de Encabezado</title> - - <para>En la sección <link - linkend="printing-simple">Configuración Simple - de una Impresora</link>, deshabilitamos la impresión de estas - páginas al especificar <literal>sh</literal> (que son siglas - en inglés para <quote>supress header</quote>, algo así - como <quote>eliminar encabezados</quote>) en el fichero - <filename>/etc/printcap</filename>. Para efecto de habilitar la - impresión de páginas de encabezado, simplemente elimine - la característica <literal>sh</literal> del fichero.</para> - - <para>¿Suena demasiado fácil, verdad?</para> - - <para>Efectivamente. Es <emphasis>probable</emphasis> que deba proveer - de un filtro de salida, para efecto de que se mande la cadena de - inicialización a la impresora. Aqui tenemos un ejemplo de un - filtro de salida para impresoras compatibles con PCL de Hewlett - Packard:</para> - - <programlisting>#!/bin/sh -# -# hpof - Filtro de salida para impresoras compatibles con Hewlett Packard PCL -# Instalado en /usr/local/libexec/hpof - -printf "\033&k2G" || exit 2 -exec /usr/libexec/lpr/lpf</programlisting> - - <para>Especifique la ruta del filtro de salida, en la - característica <literal>of</literal>. Vea la sección - <link linkend="printing-advanced-of">Filtros de Salida</link> para - más información al respecto.</para> - - <para>Aqui podrá ver un ejemplo de un fichero - <filename>/etc/printcap</filename> para la impresora - <literal>teak</literal> que trabajamos anteriormente; hemos - añadido las páginas de encabezado, así - como el filtro de salida mencionado anteriormente:</para> - - <programlisting># -# /etc/printcap for host orchid -# -teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ - :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ - :if=/usr/local/libexec/hpif:\ - :vf=/usr/local/libexec/hpvf:\ - :of=/usr/local/libexec/hpof:</programlisting> - - <para>Ahora, cuando los usuarios impriman sus trabajos a la impresora - <literal>teak</literal>, ellos obtendrán una página de - encabezado por cada trabajo que manden a imprimir. Si los usuarios - desean pasar un tiempo buscando sus impresiones, pueden deshabilitar la - impresión de esta página con el comando - <command>lpr -h</command>; para más información sobre las - opciones de &man.lpr.1;, vea la sección <link - linkend="printing-lpr-options-misc">Opciones de Páginas de - Encabezado</link>.</para> - - <note> - <para>El sistema <application>LPD</application> envia a la impresora - un caracter de alimentación de página. Si su - impresora utiliza un caracter diferente de alimentación de - página, especifíquelo en el fichero - <filename>/etc/printcap</filename>, bajo la característica - <literal>ff</literal>.</para> - </note> - </sect3> - - <sect3 id="printing-advanced-header-pages-controlling"> - <title>Controlando las Páginas de Encabezado</title> - - <para>Al habilitar las páginas de encabezado, - <application>LPD</application> produce un <emphasis>encabezado - largo</emphasis>, una página completa con letras largas que - identifican el usuario, la maquina host, y el trabajo. Aqui tenemos - un ejemplo (kelly ha impreso un trabajo llamado outline, desde el - host <hostid>rose</hostid>):</para> - - <programlisting> k ll ll - k l l - k l l - k k eeee l l y y - k k e e l l y y - k k eeeeee l l y y - kk k e l l y y - k k e e l l y yy - k k eeee lll lll yyy y - y - y y - yyyy - - - ll - t l i - t l - oooo u u ttttt l ii n nnn eeee - o o u u t l i nn n e e - o o u u t l i n n eeeeee - o o u u t l i n n e - o o u uu t t l i n n e e - oooo uuu u tt lll iii n n eeee - - - - - - - - - - r rrr oooo ssss eeee - rr r o o s s e e - r o o ss eeeeee - r o o ss e - r o o s s e e - r oooo ssss eeee - - - - - - - - Job: outline - Date: Sun Sep 17 11:04:58 1995</programlisting> - - <para>Después de esta página, - <application>LPD</application> manda un caracter de alimentación - de página, para que el trabajo sea impreso en una hoja blanca - nueva (a menos que cuente con <literal>sf</literal> (por sus siglas en - inglés <quote>supress form feed</quote>, que es - <quote>eliminación de alimentación de - página</quote>) en el fichero - <filename>/etc/printcap</filename>).</para> - - <para>Si lo prefiere, <application>LPD</application> puede generar un - <emphasis>encabezado pequeño</emphasis>; puede hacer esto, al - especificar <literal>sb</literal> en el fichero - <filename>/etc/printcap</filename>. La página de encabezado que - será impresa se vera así:</para> - - <programlisting>rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995</programlisting> - - <para>Por default, <application>LPD</application> imprime la - página de encabezado en primer término y posteriormente - el trabajo. Para cambiar este comportamiento, es necesario incluir - la característica <literal>hl</literal> (encabezado a lo - último por sus siglas en inglés), en el fichero - <filename>/etc/printcap</filename>.</para> - </sect3> - - <sect3 id="printing-advanced-header-pages-accounting"> - <title>Conteo de P´ginas de Encabezado</title> - - <para>Cuando se utiliza la utilidad integrada de conteo de - <application>LPD</application>, refuerza el paradigma de que; - cuando se refiere al conteo de impresiones: las páginas de - encabezados deben ser <emphasis>sin coto alguno</emphasis>.</para> - - <para>¿Por qué?</para> - - <para>Por que el filtro de salida es el único programa externo - que puede llevar un conteo de las páginas impresas, cuando - tiene el control, y este no es provisto con información de un - <emphasis>usuario o host</emphasis> o algun fichero contador, de tal - forma que no tiene idea de a quien cargar estas impresiones. Tampoco - es conveniente, simplemente <quote>cargar una impresión</quote> - al total de las impresiones del filtro de texto o filtro de - conversión (esos que cuentan con información del - usuario y host), esto en virtud de que los usuarios pueden suprimir - el uso de estas páginas con <command>lpr -h</command>. Esto - implica que se le podrían cobrar hojas que ellos no imprimieron. - Básicamente el comando <command>lpr -h</command> sería la - opción preferida de los usuarios concientes del sistema, pero - usted no puede ofrecer incentivo alguno para que se utilice.</para> - - <para><emphasis>Tampoco es una buena alternativa</emphasis> que cada - filtro genere sus páginas de encabezado (y por lo tanto poder - cobrar por ellas). Si los usuarios desean suprimirlas usando la - opción <command>lpr -h</command>, aún obtendrán - estas páginas y les serán cobradas, en virtud de que - <application>LPD</application> no tiene transfiere la opción - <option>-h</option> a los filtros.</para> - - <para>Así que, ¿Qué opciones tenemos?</para> - - <para>Usted puede:</para> - - <itemizedlist> - <listitem> - <para>Aceptar el paradigma de <application>LPD</application> y no - cobrar por las páginas de encabezado.</para> - </listitem> - - <listitem> - <para>Instalar una alternativa a <application>LPD</application>, - tal como <application>LPRng</application>. La sección - <link linkend="printing-lpd-alternatives">Alternativas al Sistema - de Impresión Estándar</link> le informa sobre otros - programas que puede utilizar, que sustituyan a - <application>LPD</application>.</para> - </listitem> - - <listitem> - <para>Escribir un filtro de salida <emphasis>inteligente</emphasis>. - Normalmente, un filtro de salida no esta diseñado para hacer - otra cosa, que no sea inicializar la impresora o bien hacer alguna - conversión sencilla de caracteres. Esta diseñado - para páginas de encabezado y trabajos en texto plano (cuando - no existe algun filtro de texto (entrada)). Pero cuando si existe - un filtro de texto, para los trabajos en texto plano, entonces - <application>LPD</application> sólo hará uso del - filtro de salida para las páginas de encabezado. Y el - filtro de salida puede pasar el texto de la página - encabezado generado por <application>LPD</application>, para - determinar el usuario y el host al cual se le cobrará dicha - impresión. El único problema con este metodo es - que el filtro de salida aún no sabe que fichero usar - para llevar la cuenta de las impresiones (la característica - <literal>af</literal> no pasa el nombre del fichero), pero si - usted cuenta con un fichero establecido para llevar esta cuenta, - puede incluirlo en el código del filtro de salida. Para - efecto de facilitar este paso, utilice la característica - <literal>sh</literal> (encabezado corto) del fichero - <filename>/etc/printcap</filename>. Nuevamente, todo esto - podría resultar muy complicado, y los usuarios estaran - muy agradecidos con el generoso administrador del sistema que - genera las páginas de encabezado gratis.</para> - </listitem> - </itemizedlist> - </sect3> - - <sect3 id="printing-advanced-header-pages-ps"> - <title>Páginas de Encabezado en Impresoras PostScript</title> - - <para>Como se ha descrito anteriormente, <application>LPD</application> - puede generar páginas encabezado en texto plano para gran - cantidad de impresoras. Claro esta, que PostScript no puede imprimir - texto plano directamente, de tal forma que la habilidad de imprimir - estas páginas de <application>LPD</application>, es - inservible—o casi.</para> - - <para>Una forma obvia de crear las páginas de encabezado, es hacer - que cada filtro de conversión y de texto, creen sus - páginas de encabezado. Los filtros deberán utilizar el - nombre de usuario y host, para generar esta página - personalizada. Lo malo de este metodo es que los usuarios siempre - obtendrán una página de encabezado, aun cuando usen en - sus impresiones <command>lpr -h</command>.</para> - - <para>Exploremos este metodo. El siguiente script considera tres - argumentos (nombre del login del usuario, nombre del host, y nombre del - trabajo) y genera una página simple de encabezado PostScript: - </para> - - <programlisting>#!/bin/sh -# -# make-ps-header - crea una pagina de encabezado PostScript a stdout -# Instalado en /usr/local/libexec/make-ps-header -# - -# -# Estas son unidades PostScript (72 a la pulgada). Modifiquelo para A4 o -# cualquier tamano de papel que este utilizando. -# -page_width=612 -page_height=792 -border=72 - -# -# Verificar argumentos -# -if [ $# -ne 3 ]; then - echo "Usage: `basename $0` <user> <host> <job>" 1>&2 - exit 1 -fi - -# -# Salvar estos, principalmente para lectura de PostScript, mas abajo. -# -user=$1 -host=$2 -job=$3 -date=`date` - -# -# Enviar el codigo PostScript a la salida estandar. -# -exec cat <<EOF -%!PS - -% -% Segurese de no interferir con el trabajo del usuario c continuacion -% -save - -% -% Crear un grueso y poco placentero borde alrededor del borde de la pagina. -% -$border $border moveto -$page_width $border 2 mul sub 0 rlineto -0 $page_height $border 2 mul sub rlineto -currentscreen 3 -1 roll pop 100 3 1 roll setscreen -$border 2 mul $page_width sub 0 rlineto closepath -0.8 setgray 10 setlinewidth stroke 0 setgray - -% -% Desplegar nombre de login del usuario, bonito largo y prominente -% -/Helvetica-Bold findfont 64 scalefont setfont -$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto -($user) show - -% -% Ahora mostrar los aburridos detalle generales -% -/Helvetica findfont 14 scalefont setfont -/y 200 def -[ (Job:) (Host:) (Date:) ] { -200 y moveto show /y y 18 sub def } -forall - -/Helvetica-Bold findfont 14 scalefont setfont -/y 200 def -[ ($job) ($host) ($date) ] { - 270 y moveto show /y y 18 sub def -} forall - -% -% Eso es todo -% -restore -showpage -EOF</programlisting> - - <para>Ahora, cada uno de los filtros de conversión y de texto, - pueden invocar este script, para en primer lugar generar esta - página y después imprimir el trabajo del usuario. Aqui - tenemos el filtro de conversión DVI que revisamos anteriormente - en este documento, modificado para generar páginas de - encabezado:</para> - - <programlisting>#!/bin/sh -# -# psdf - DVI to PostScript printer filter -# Installed in /usr/local/libexec/psdf -# -# Invoked by lpd when user runs lpr -d -# - -orig_args="$@" - -fail() { - echo "$@" 1>&2 - exit 2 -} - -while getopts "x:y:n:h:" option; do - case $option in - x|y) ;; # Ignore - n) login=$OPTARG ;; - h) host=$OPTARG ;; - *) echo "LPD started `basename $0` wrong." 1>&2 - exit 2 - ;; - esac -done - -[ "$login" ] || fail "No login name" -[ "$host" ] || fail "No host name" - -( /usr/local/libexec/make-ps-header $login $host "DVI File" - /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args</programlisting> - - <para>Note como el filtro debe pasar los argumentos en orden, para efecto - de determinar el nombre de usuario y host. El procedimiento para los - otros filtros de conversión es identico. El filtro de texto - tiene una pequeña variación (vea la sección <link - linkend="printing-advanced-filters">Como Trabajan los Filtros</link>). - </para> - - <para>Como hemos mencionado anteriormente, este esquema simplemente nos - sirve para deshabilitar la opción <quote>eliminar - encabezados</quote> (la opción <option>-h</option>) de - <command>lpr</command>. Si los usuarios desean salvar algunos arboles - (o algunos centavos si usted cobra por estas páginas), no - podrán deshabilitar esta opción, ya que cada filtro - imprimirá una página de encabezado con cada trabajo - impreso.</para> - - <para>Para permitir que los usuarios desactiven las páginas de - encabezado en cada trabajo, será necesario que utilice el truco - del que hablamos en la sección <link - linkend="printing-advanced-header-pages-accounting">Conteo de - Páginas de Encabezado</link>: escribir un filtro de salida que - pase la página generada por LPD y produzca una versión - PostScript de la misma. Si el usuario utiliza - <command>lpr -h</command>, entonces <application>LPD</application> no - generará una página encabezado, y tampoco su filtro de - salida. De otra forma, su filtro de salida tomará los datos de - <application>LPD</application> y enviará el código - PostScript apropiado para la impresión de la página de - encabezado.</para> - - <para>Si usted cuenta con una impresora PostScript conectada a un - puerto serial, puede usar <command>lprps</command>, que cuenta con - un filtro de salida, <command>psof</command>, que hace lo - mencionado. Note que <command>psof</command> no cobra por las - páginas de encabezado.</para> - </sect3> - </sect2> - - <sect2 id="printing-advanced-network-printers"> - <title>Impresión en Red</title> - - <indexterm> - <primary>impresora</primary> - <secondary>red</secondary> - </indexterm> - <indexterm><primary>impresión en red</primary></indexterm> - <para>FreeBSD cuenta con soporte para impresión en red: envío - de trabajos a impresoras remotas. La impresión en red, - normalmente se cuenta con dos escenarios:</para> - - <itemizedlist> - <listitem> - <para>Accesando a una impresora que esta conectada a un host - remoto. Esto es, una impresora que esta conectada por algun medio - convencional, como puerto serial o paralelo, en un host. Y por - otro lado se habilita <application>LPD</application> para poder - imprimir desde otros hosts de la red. La sección <link - linkend="printing-advanced-network-rm">Impresoras Instaladas en - Hosts Remotos</link> le indica como hacer esto.</para> - </listitem> - - <listitem> - <para>Accesando a una impresora que esta conectada directamente a la - red. En este caso la impresora cuenta con un dispositivo de red en - adición (o en su lugar) del convencional paralelo o serial. - Esta impresora puede funcionar de la siguiente manera:</para> - - <itemizedlist> - <listitem> - <para>Puede comprender el protocolo de - <application>LPD</application> e inclusive hacer consulta de - trabajos en hosts remotos. En este caso, actua tal como un - host normal que esta ejecutando <application>LPD</application>. - Aplique el procedimiento revisado en <link - linkend="printing-advanced-network-rm">Impresoras - Instaladas en Hosts Remotos</link> para efecto de configurar - estas impresoras.</para> - </listitem> - - <listitem> - <para>Puede contar con soporte para envío de datos por medio - de la conexión de red. En este caso, usted - <quote>conecta</quote> la impresora a un host de la red, al hacer - responsable, a dicho host, de la administración de los - trabajos en la cola de impresión y su envio a la - impresora. La sección <link - linkend="printing-advanced-network-net-if">Impresoras con - Interfaces de Red para Secuencia de Datos</link> le da algunos - consejos y sugerencias sobre como instalar estas impresoras. - </para> - </listitem> - </itemizedlist> - </listitem> - </itemizedlist> - - <sect3 id="printing-advanced-network-rm"> - <title>Impresoras Instaladas en Hosts Remotos</title> - - <para>El sistema de cola de impresión de - <application>LPD</application> cuenta con soporte integrado para enviar - trabajos de impresión a un host remoto que cuente con - <application>LPD</application> (o alguna sistema compatible con - <application>LPD</application>). Esta habilidad le permite instalar - una impresora en un host, y hacerla accesible desde otros hosts. - También es útil con impresoras que cuentan con - interfaces de red que comprenden el protocolo de - <application>LPD</application>.</para> - - <para>Para habilitar la funcionalidad de impresión remota, primero - instale la impresora en un host, que será el <emphasis>host de - impresión</emphasis>. Esto lo podemos hacer utilizando los - pasos descritos en la sección <link - linkend="printing-simple">Configuración Simple de una - impresora</link>. Realice cualquier configuración adicional - adicional que se requiera, de acuerdo a lo descrito en la - sección <link - linkend="printing-advanced">Configuración Avanzada de una - Impresora</link>. Asegurese de probar la impresora y de que esta - funcionando correctamente, así como las funciones de - <application>LPD</application> que haya habilitado. También - asegurese de que el <emphasis>host local</emphasis> cuenta con - autorización para usar el servicio de - <application>LPD</application> en el <emphasis>host remoto</emphasis> - (vea la sección <link - linkend="printing-advanced-restricting-remote">Restricción de - Trabajos de Impresoras Remotas</link>).</para> - - <indexterm> - <primary>impresora</primary> - <secondary>red</secondary> - </indexterm> - <indexterm><primary>impresión en red</primary></indexterm> - <para>Si usted esta utilizando una impresora que cuenta con un - dispositivo de red, compatible con <application>LPD</application>, - entonces el <emphasis>host de impresión</emphasis> mencionado - más adelante, será la misma impresora, y el - <emphasis>nombre de la impresora</emphasis> será el nombre que - usted le haya asignado a la impresora. Vea la documentación - que incluye su impresora y/o el dispositivo de impresión en - red para detalles al respecto.</para> - - <tip> - <para>Si usted esta utilizando una impresora LaserJet Hewlett Packard - entonces la impresora <literal>nombre</literal> - automáticamente hará la conversión de LF a - CRLF, de tal forma que no será necesario el uso del script - <filename>hpif</filename>.</para> - </tip> - - <para>Y de esta manera, para los hosts que desee que tengan acceso a la - impresora, deberá crear una entrada en su fichero - <filename>/etc/printcap</filename>, que contenga lo siguiente:</para> - - <orderedlist> - <listitem> - <para>Nombre la entrada como desee. Para simplificar, quizás - desee darle el mismo nombre y alias usado en el host de - impresión.</para> - </listitem> - - <listitem> - <para>La característica <literal>lp</literal> dejela en - blanco, de manera explícita (<literal>:lp=:</literal>). - </para> - </listitem> - - <listitem> - <para>Cree un directorio para la cola de impresión y - especifique su ruta en la característica - <literal>sd</literal>. <application>LPD</application> - utilizará este directorio para almacenar los trabajos - antes de que sean enviados al host de impresión.</para> - </listitem> - - <listitem> - <para>Añada el nombre del host de impresión a la - característica <literal>rm</literal>.</para> - </listitem> - - <listitem> - <para>Añada el nombre de la impresora en el host de - impresión en la característica - <literal>rp</literal>.</para> - </listitem> - </orderedlist> - - <para>Eso es todo. No es necesario listar los filtros de - conversión, dimensiones de la página, o algo - adicional en el fichero <filename>/etc/printcap</filename>.</para> - - <para>Aqui tenemos un ejemplo. El host <hostid>rose</hostid> cuenta - con dos impresoras, <literal>bamboo</literal> y - <literal>rattan</literal>. Vamos a habilitar a usuarios en el host - <hostid>orchid</hostid> para que puedan imprimir en esas impresoras. - Aqui tenemos el fichero <filename>/etc/printcap</filename> para el - host <hostid>orchid</hostid> (usado en la sección <link - linkend="printing-advanced-header-pages-enabling">Habilitando las - Páginas de Encabezado</link>). Ya cuenta con la entrada - para la impresora <literal>teak</literal>; y hemos añadido - las entradas para las impresoras del host <hostid>rose</hostid>:</para> - - <programlisting># -# Fichero /etc/printcap para el host orchid - anadiendo impresoras -# (remotas) del host rose -# - -# -# teak es impresora local; esta conectada directamente a orchid: -# -teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ - :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\ - :if=/usr/local/libexec/ifhp:\ - :vf=/usr/local/libexec/vfhp:\ - :of=/usr/local/libexec/ofhp: - -# -# rattan esta conectada a rose; envio de trabajos para rattan en rose: -# -rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: - -# -# bamboo tambien esta conectada a rose: -# -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:</programlisting> - - <para>Posteriormente, sólo necesitamos crear los directorios - para la cola de impresión en el host - <hostid>orchid</hostid>:</para> - - <screen>&prompt.root; <userinput>mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput> -&prompt.root; <userinput>chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput> -&prompt.root; <userinput>chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo</userinput></screen> - - <para>Ahora los usuarios de <hostid>orchid</hostid> pueden imprimir en - <literal>rattan</literal> y <literal>bamboo</literal>. Si, por - ejemplo, un usuario en <hostid>orchid</hostid> teclea - - <screen>&prompt.user; <userinput>lpr -P bamboo -d sushi-review.dvi</userinput></screen> - - el sistema de cola de <application>LPD</application> en el host - <hostid>orchid</hostid>, copiará el trabajo al directorio - de cola <filename>/var/spool/lpd/bamboo</filename> y notará - que se trata de un trabajo DVI. Tan pronto como el host - <hostid>rose</hostid> tenga espacio en el directorio de cola de - impresión de <literal>bamboo</literal>, los dos - <application>LPDs</application> transferirán el fichero a - <hostid>rose</hostid>. El fichero quedará en espera en - la cola de <hostid>rose</hostid> hasta que sea impreso. Este - será convertido de DVI a PostScript (dado que - <literal>bamboo</literal> es una impresora PostScript), en - <hostid>rose</hostid>.</para> - </sect3> - - <sect3 id="printing-advanced-network-net-if"> - <title>Impresoras con Interfaces de Red para Secuencia de Datos</title> - - <para>Comunmente, cuando usted adquiere una tarjeta de red para - impresoras, puede obtener dos versiones: una que emula la cola - de impresión (que son las de mayor valor), o bien, otra - que simplemente le permite recibir datos tal como lo hace un - puerto serial o paralelo (la versió económica). Esta - sección le explica como utilizar la versión - económica. Para el uso de la versión de mayor - valor, vea la sección <link - linkend="printing-advanced-network-rm">Impresoras Instaladas en - Hosts Remotos</link>.</para> - - <para>El formato del fichero <filename>/etc/printcap</filename> le - permite especificar que puerto serial o paralelo utilizar, y (en - caso de que utilice un puerto serial) la velocidad de baudio, si - utiliza control de flujo, retraso en tabulador, conversión - de nuevas líneas y más. Pero no hay manera de indicar - la conexión de una impresora que escucha en un puerto TCP/IP - u otro puerto de red.</para> - - <para>Para efecto de enviar datos a una impresora en red, usted necesita - crear un programa de comunicación que pueda ser llamado desde - un filtro de texto o de conversión. Aqui tenemos un ejemplo - de dicho programa: el script <command>netprint</command>, que toma - todos los datos de la entrada estandar y los envia a un impresora - conectada a la red. Hemos especificado el nombre de host de la - impresora como primer argumento y el puerto al que esta conectado - como segundo argumento, en <command>netprint</command>. Note que - este tipo de soporte sólo trabaja en una vía (de FreeBSD - a la impresora); gran cantidad de impresoras cuentan con soporte de - ambas vías, y quizás desee tomar ventaja de esto (para - obtener estatus de impresión, contabilidad, desempeño, - etc.).</para> - - <programlisting>#!/usr/bin/perl -# -# netprint - Filtro de texto para impresoras en red -# Instalado en /usr/local/libexec/netprint -# -$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>"; - -$printer_host = $ARGV[0]; -$printer_port = $ARGV[1]; - -require 'sys/socket.ph'; - -($ignore, $ignore, $protocol) = getprotobyname('tcp'); -($ignore, $ignore, $ignore, $ignore, $address) - = gethostbyname($printer_host); - -$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address); - -socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol) - || die "Can't create TCP/IP stream socket: $!"; -connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!"; -while (<STDIN>) { print PRINTER; } -exit 0;</programlisting> - - <para>Una vez hecho este script, podemos utilizarlo en varios filtros. - Supongamos que contamos con la impresora de línea Diablo 750-N - conectada a la red. La impresora acepta datos para impresión - en el puerto 5100. El nombre de host que tiene la impresora es - scrivener. El filtro de texto a usar quedaría de la - siguiente manera:</para> - - <programlisting>#!/bin/sh -# -# diablo-if-net - Filtro de texto para la impresora Diable en `scrivener' usando -# el puerto 5100. Instalado en /usr/local/libexec/diablo-if-net -# -exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100</programlisting> - </sect3> - </sect2> - - <sect2 id="printing-advanced-restricting"> - <title>Restricción del Uso de la Impresora</title> - - <indexterm> - <primary>impresora</primary> - <secondary>restringiendo el acceso a</secondary> - </indexterm> - <para>Esta sección le da información sobre la - restricción en el uso de la impresora. El sistema de - <application>LPD</application> le permite controlar quien puede - acceder a la impresora de ambas formas, local y remota, si los - usuarios pueden imprimir múltiples copias, que tan grandes - pueden ser los trabajos de impresión, y limitar el tamaño - de la cola de impresión.</para> - - <sect3 id="printing-advanced-restricting-copies"> - <title>Restricción de Copias Multiples</title> - - <para>El sistema de <application>LPD</application> le facilita a los - usuarios el imprimir múltiples copias de un mismo fichero. Los - usuarios pueden usar (por ejemplo) <command>lpr -#5</command> para - imprimir 5 copias de cada fichero enviado. El hecho de que esto sea - bueno o no es algo que depende de usted.</para> - - <para>Si usted siente que las copias múltiples causan trabajo - inecesario a su impresora, puede deshabilitar la opción - <option>-#</option> de &man.lpr.1;, al incluir la característica - <literal>sc</literal> en su fichero <filename>/etc/printcap</filename>. - Cuando los usuarios utilicen la opción <option>-#</option> al - momento de imprimir, verán el siguiente aviso:</para> - - <screen>lpr: multiple copies are not allowed</screen> - - - <para>Recuerde que si usted a configurado una impresora para su - acceso de forma remota (vea la sección <link - linkend="printing-advanced-network-rm">Impresoras - Instaladas en Hosts Remotos</link>), será necesario que - también cuente con la característica <literal>sc</literal> - en el fichero <filename>/etc/printcap</filename> del host remoto, o - bien, los usuarios aun podrán hacer uso de la opción - <option>-#</option>, al usar un host diferente.</para> - - <para>Aqui presentamos un ejemplo. Este es un ejemplo del fichero - <filename>/etc/printcap</filename>, del host <hostid>rose</hostid>. - La impresora <literal>rattan</literal> es <quote>de batalla</quote> - por lo que permitiremos las copias múltiples, pero la - impresora laser <literal>bamboo</literal> es más delicada por - lo que vamos a deshabilitar las copias múltiples, al - añadir la característica <literal>sc</literal>:</para> - - <programlisting># -# Fichero /etc/printcap del host rose - restringe copias multiples en bamboo -# -rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple: - -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:sc:\ - :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\ - :if=/usr/local/libexec/psif:\ - :df=/usr/local/libexec/psdf:</programlisting> - - <para>Ahora, tambié debemos añadir la característica - <literal>sc</literal> en el fichero <filename>/etc/printcap</filename> - del host <hostid>orchid</hostid> (y ya que estamos en eso, - deshabiltemos las copias múltiples para la impresora - <literal>teak</literal>):</para> - - <programlisting># -# Fichero /etc/printcap del host orchid - sin copias multiples para la -# impresora local teak o impresora remota bamboo -teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ - :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\ - :if=/usr/local/libexec/ifhp:\ - :vf=/usr/local/libexec/vfhp:\ - :of=/usr/local/libexec/ofhp: - -rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan: - -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:</programlisting> - - <para>Al incluir la característica <literal>sc</literal>, hemos - prevenido el uso de <command>lpr -#</command>, pero eso no previene - el uso de &man.lpr.1; gran cantidad de veces, o el envío del - mismo trabajo varias veces, tal como:</para> - - <screen>&prompt.user; <userinput>lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign</userinput></screen> - - <para>Existen gran cantidad de formas para prevenir este abuso - (incluyendo el ignorarlo), que usted queda en libertad de explorar. - </para> - </sect3> - - <sect3 id="printing-advanced-restricting-access"> - <title>Restricción de Acceso a Impresoras</title> - - <para>Usted puede controlar quien puede imprimir y en que impresoras, - haciendo uso del mecanismo de grupos de Unix y de la - característica <literal>rg</literal> en el fichero - <filename>/etc/printcap</filename>. Simplemente añada en un - grupo determinado, a los usuarios que desea puedan imprimir en cierta - impresora, y después añada el nombre del grupo a la - característica <literal>rg</literal>.</para> - - <para>Todos los usuarios que no pertenezcan a este grupo (incluyendo al - superusuario (<username>root</username>)), y que deseen imprimir en la - impresora controlada, les aparecerá este mensaje: - - <errorname>lpr: Not a member of the restricted group</errorname></para> - - <para>De la misma forma que hicimos con <literal>sc</literal> (la - eliminación de copias múltiples), con - <literal>rg</literal> deber´ indicarla en los hosts remotos que - tengan acceso a sus impresoras si lo cree conveniente (vea la - sección <link - linkend="printing-advanced-network-rm">Impresoras Instaladas en - Hosts Remotos</link>).</para> - - <para>Por ejemplo, vamos a permitir que cualquiera imprima en - <literal>rattan</literal>, pero solo aquellos que forman parte del - grupo <literal>artistas</literal> podrán usar la impresora - <literal>bamboo</literal>. Nuevamente tenemos el fichero - <filename>/etc/printcap</filename> para el host - <hostid>rose</hostid>:</para> - - <programlisting># -# Fichero /etc/printcap del host rose - grupo restringido para bamboo -# -rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple: - -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:sc:rg=artistas:\ - :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\ - :if=/usr/local/libexec/psif:\ - :df=/usr/local/libexec/psdf:</programlisting> - - <para>Vamos a dejar de lado el otro fichero - <filename>/etc/printcap</filename> de ejemplo (el del host - <hostid>orchid</hostid>). Claro esta, que cualquier usuario desde - <hostid>orchid</hostid> puede imprimir en <literal>bamboo</literal>. - En este caso podriamos aceptar sólo ciertos accesos desde - <hostid>orchid</hostid>, y esto les daría acceso a la impresora. - O no.</para> - - <note> - <para>Sólo puede haber un grupo restringido por impresora.</para> - </note> - </sect3> - - <sect3 id="printing-advanced-restricting-sizes"> - <title>Controlando el Tamaño de los Trabajos Enviados</title> - - <indexterm><primary>trabajos de impresión</primary></indexterm> - <para>Si usted cuenta con gran cantidad de usuarios accesando sus - impresoras, probablemente necesite establecer un límite - máximo en el tamaño que deban tener los trabajos - enviados a imprimir. Después de todo, sólo existe - tanto espacio libre en el sistema de ficheros como el que se tiene - en los directorios de cola, y también usted debe asegurarse - de que exista el espacio suficiente para otros usuarios.</para> - - <indexterm> - <primary>trabajos de impresión</primary> - <secondary>controlando</secondary> - </indexterm> - <para>El sistema de <application>LPD</application>, le permite - especificar un monto maximo de tamaño en bytes para un trabajo, - con la característica <literal>mx</literal>. Las unidades - están indicadas en blques <literal>BUFSIZ</literal>, que son - de 1024 bytes. Si usted le agrega un cero a esta - característica, no habrá límite en el - tamaño de los trabajos que se puedan enviar a imprimir; por - otro lado, si no se especifica la característica - <literal>mx</literal>, el límite por default será de - 1000 bloques.</para> - - <note> - <para>El límite es válido para los - <emphasis>ficheros</emphasis> del trabajo, y <emphasis>no</emphasis> - para el tamaño total del trabajo.</para> - </note> - - <para>El sistema de <application>LPD</application> no rehusará - imprimir los trabajos que exceden el límite, en su lugar - procederá con la impresión hasta el límite - indicado. El resto del trabajo quedará descartado. El hecho - de que este comportamiento sea correcto o no, aun es tema de - debate.</para> - - <para>Ahora permitamonos incluir límites a nuestras impresoras - de ejemplo <literal>rattan</literal> y <literal>bamboo</literal>. En - virtud de que esos <quote>artistas</quote> tienden a imprimir grandes - trabajos en PostScript, los vamos a limitar a cinco megabytes. En la - impresora de línea no vamos a especificar límite:</para> - - <programlisting># -# Fichero /etc/printcap del host rose -# - -# -# Sin limite de tamano en el trabajo: -# -rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:mx#0:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple: - -# -# Con limite de cinco megabytes: -# -bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ - :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\ - :if=/usr/local/libexec/psif:\ - :df=/usr/local/libexec/psdf:</programlisting> - - <para>Nuevamente, los límites aplican sólo para los - usuarios locales. Si se han configurado las impresoras para su - acceso de forma remota, los usuarios que accesen remotamente no - tendrán esta limitante. Para efecto de que esto sea - válido en los usuarios remotos, deberá agregar la - característica <literal>mx</literal> en el fichero - <filename>/etc/printcap</filename> de los hosts remotos. Vea la - sección <link - linkend="printing-advanced-network-rm">Impresoras Instaladas en - Hosts Remotos</link> para mayor información sobre la - instalación de impresoras en red.</para> - - <para>Existe otra forma especializada para limitar el tamaño - de los trabajos, desde impresoras remotas, vea la sección <link - linkend="printing-advanced-restricting-remote">Restricción de - Trabajos de Impresoras Remotas</link>.</para> - </sect3> - - <sect3 id="printing-advanced-restricting-remote"> - <title>Restricción de Trabajos de Impresoras Remotas</title> - - <para>El sistema de cola de <application>LPD</application> cuenta con - varios metodos para restringir la impresión de trabajos enviados - por hosts remotos:</para> - - <variablelist> - <varlistentry> - <term>Restricciones del Host</term> - - <listitem> - <para>Haciendo uso de los ficheros - <filename>/etc/hosts.equiv</filename> y - <filename>/etc/hosts.lpd</filename>, usted puede controlar - el <application>LPD</application> local, para determinar - de que hosts remotos se acepten conexiones. En este - caso, <application>LPD</application> verifica, en caso de una - petición, que el host remoto se encuentre listado en - agluno de estos dos ficheros. Si no es así, - <application>LPD</application> rechazará la - petición.</para> - - <para>El formato de estos ficheros es simple: el nombre de un host - por línea. Note que el fichero - <filename>/etc/hosts.equiv</filename> también es usado por - el protocolo &man.ruserok.3;, y afecta programas como &man.rsh.1; - y &man.rcp.1;, así que tenga cuidado al editarlo.</para> - - <para>Por ejemplo, este es el fichero - <filename>/etc/hosts.lpd</filename> del host - <hostid>rose</hostid>:</para> - - <programlisting>orchid -violet -madrigal.fishbaum.de</programlisting> - - <para>Esto significa que <hostid>rose</hostid> aceptará - peticiones de los hosts <hostid>orchid</hostid>, - <hostid>violet</hostid> y - <hostid role="fqdn">madrigal.fishbaum.de</hostid>. Si cualquier - otro host intenta accesar el <application>LPD</application> de - <hostid>rose</hostid>, el acceso será denegado.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>Restricciones de Tamaño</term> - - <listitem> - <para>Usted puede controlar cuanto espacio libre se requiere, en el - sistema de fichero donde se localiza el directorio del sistema - de impresión. Cree un fichero llamado - <filename>minfree</filename>, en el directorio local de la cola - de impresión. En ese fichero añada un numero que - representa el numero de bloques libres que deben haber en el - disco (512 bytes), para efecto de aceptar un trabajo de forma - remota.</para> - - <para>Esto permite asegurarle que los usuarios remotos no llenaran - su disco duro. Esto también puede usarse para dar cierta - prioridad a los usuarios locales: ya que podrá colocar sus - trabajos en espera en la cola de impresión, hasta que la - cantidad de espacio libre sea inferior a la indicada en el - fichero <filename>minfree</filename>.</para> - - <para>Por ejemplo, incluyamos a <filename>minfree</filename> en - la impresora <literal>bamboo</literal>. Para esto, primero - examinamos el fichero <filename>/etc/printcap</filename>, para - encontrar los datos de la impresora; aqui tenemos la entrada de - <literal>bamboo</literal>:</para> - - <programlisting>bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ - :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\ - :lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:mx#5000:\ - :if=/usr/local/libexec/psif:\ - :df=/usr/local/libexec/psdf:</programlisting> - - <para>El directorio de la cola de impresión es indicado por - la característica <literal>sd</literal>. Vamos a dejar - tres megabytes (que son 6144 bloques de disco) como espacio libre - que debe existir en el sistema de ficheros, para que - <application>LPD</application> acepte trabajos remotos:</para> - - <screen>&prompt.root; <userinput>echo 6144 > /var/spool/lpd/bamboo/minfree - </userinput></screen> - </listitem> - </varlistentry> - - <varlistentry> - <term>Restricciones por Usuario</term> - - <listitem> - <para>Usted puede controlar que usuarios remotos pueden imprimir en - impresoras locales, al incluir la característica - <literal>rs</literal> en <filename>/etc/printcap</filename>. - Cuando <literal>rs</literal> aparece en la entrada de una - impresora que esta conectada localmente, - <application>LPD</application> aceptará trabajos de - usuarios remotos, <emphasis>siempre y cuando</emphasis> el - usuario que ha enviado el trabajo, tenga alguna cuenta, con el - mismo nombre de usuario en el host local. De otra forma - <application>LPD</application> no hará el trabajo.</para> - - <para>Esta característica es particularmente útil en - medios donde (por ejemplo) existen varias areas que comparten - una red, y algunos usuarios traspasan las fronteras - departamentales. Al otorgarles una cuenta en su sistema, pueden - hacer uso de sus impresoras, desde su propio departamento de - sistemas. Si solo desea permitirles hacer uso de sus impresoras - y <emphasis>no</emphasis> de los recursos de su sistema, puede - asignarles cuentas <quote>tontas</quote> (token accounts), que - no cuentan con un directorio home y con un un shell inservible - como <filename>/usr/bin/false</filename>.</para> - </listitem> - </varlistentry> - </variablelist> - </sect3> - </sect2> - - <sect2 id="printing-advanced-acct"> - <title>Contabilidad del Uso de la Impresora</title> - - <indexterm> - <primary>contabilidad</primary> - <secondary>impresora</secondary> - </indexterm> - <para>Así que usted requiere de cobrar por las impresiones. - ¿Y por qué no?, el papel y la tinta cuestan dinero. Y - también están los costos de mantenimiento—las - impresoras estan llenas de partes móviles que tienden a - descomponerse. Usted ha analizado sus impresoras, los patrones de - uso, y costos de mantenimiento y ha llegado a un costo - por-página (o por-pie, por-metro, o por-loquesea). Ahora bien, - ¿Cómo empezar a llevar una contabilidad de las - impresiones?.</para> - - <para>Bueno, la mala noticia es que <application>LPD</application> no - provee de mucha ayuda en esta area. El conteo depende en gran parte - en el tipo de impresora con que usted cuenta, el formato en que se - imprime y de <emphasis>sus</emphasis> requerimientos para cobrar por - el uso de la impresora.</para> - - <para>Para implementar un contador, deberá modificar el filtro de - texto (para cobrar por impresiones en texto plano) y los filtros de - conversión (para cobrar por impresiones en otro formato), para - efecto de llevar un conteo de páginas o peticiones a la impresora - para imprimir. Esto no podrá llevarse a cabo con un simple filtro - de salida, dado que no puede llevar un conteo. Vea la sección - <link linkend="printing-advanced-filter-intro">Filtros</link>.</para> - - <para>En términos generales existen dos formas de hacer esto:</para> - - <itemizedlist> - <listitem> - <para>El <emphasis>contador periodico</emphasis> es la forma más - comun, quizás por que es la más sencilla. Cuando - alguien envia una impresión, el filtro registra el usuario, - host y numero de páginas en un fichero contador. Cada mes, - semestre, año o cualquier periodo de tiempo que prefiera, - puede revisar estos ficheros, de tal forma que sepa cuantas - impresiones ha realizado cada usuario y poder cobrar por las mismas. - Después de limpiar estos ficheros puede empezar un nuevo - periodo de cero.</para> - </listitem> - - <listitem> - <para>El <emphasis>contador por tiempo</emphasis> es menos conocido, - quizás por su dificultad de uso. Este metodo hace que sus - filtros cobren al usuario por sus impresiones, en cuanto hacen uso - de las impresoras. Como las cuotas de disco, el conteo es inmediato. - Con esto, usted puede prevenir que usuarios impriman cuando sus - cuentas están en numeros rojos, y quizás en cierto modo - proveer a sus usuarios de una forma de verificar sus <quote>cuotas de - impresión</quote>. Pero este metodo requiere de uso de bases - de datos, para dar seguimiento a los usuarios y sus cuotas.</para> - </listitem> - </itemizedlist> - - <para>El sistema de cola de <application>LPD</application> cuenta con - soporte para ambos metodos: en virtud de que usted debe proveer los - filtros (bueno, casi todo el tiempo), también debe proveer del - código para el contador. Pero hay un lado positivo: usted cuenta - con una enorme flexibilidad en cuanto a metodos de contabilidad se - refiere. Por ejemplo, puede utilizar un contador periodico o por - tiempo. Usted selecciona que información debe quedar registrada: - nombre de usuario, nombre del host, tipo de trabajo, páginas - impresas, medidas del papel usado, tiempo que duro en imprimir el - trabajo, y así sucesivamente. Y para hacer esto, sólo debe - modificar sus filtros.</para> - - <sect3> - <title>Contabilidad de Impresiones Rápida y Sucia</title> - - <para>FreeBSD cuenta con dos programas que pueden auxiliarlo para - instalar un simple contador periodico. Ellos son; el filtro de - texto <command>lpf</command>, descrito en la sección <link - linkend="printing-advanced-lpf">lpf: un Filtro de Texto</link>, y - &man.pac.8;, un programa para reunir y totalizar la información - de los ficheros de contador de impresiones.</para> - - <para>Como se menciono en la sección de filtros (<link - linkend="printing-advanced-filters">Como Trabajan los Filtros</link>), - <application>LPD</application> inicia los filtros de texto y - conversión con el nombre del fichero contador a usar en la - línea de comando del filtro. Los filtros pueden usar este - argumento para saber en donde registrar la información. El - nombre de este fichero se indica en la característica - <literal>af</literal> del fichero <filename>/etc/printcap</filename>, - y si no se indica su ruta completa, se hará referencia al - directorio de la cola de impresión.</para> - - <para><application>LPD</application> inicia <command>lpf</command> con - los argumentos de alto y ancho del papel (tomados de - <literal>pw</literal> y <literal>pl</literal>). <command>lpf</command> - usa estos argumentos para determinar cuanto papel será - necesario. Una vez enviado el fichero a impresión, se escribe - en el fichero contador un registro. Este registro es así:</para> - - <programlisting>2.00 rose:andy -3.00 rose:kelly -3.00 orchid:mary -5.00 orchid:mary -2.00 orchid:zhang</programlisting> - - <para>Deberá usar un fichero contador para cada impresora, dado - que <command>lpf</command> no cuenta con una lógica de - bloqueo de ficheros incluida, y dos <command>lpf</command> escribiendo - al mismo tiempo en un fichero podrian corromperlo. Una forma segura - para garantizar el uso de ficheros distintos por impresora, es usar - <literal>af=acct</literal> en el fichero - <filename>/etc/printcap</filename>. De esta forma contaremos con el - fichero contador de cada impresora por separado, en el directorio de la - cola de impresión, en un fichero llamado - <filename>acct</filename>.</para> - - <para>Cuando sea el momento de cobrar a los usuraios, ejecute el programa - &man.pac.8;. Sólo dirijase al directorio de cola, del cual - desea recabar la información y teclee <literal>pac</literal>. - Usted obtendrá un resumen similar al siguiente:</para> - - <screen> Login pages/feet runs price -orchid:kelly 5.00 1 $ 0.10 -orchid:mary 31.00 3 $ 0.62 -orchid:zhang 9.00 1 $ 0.18 -rose:andy 2.00 1 $ 0.04 -rose:kelly 177.00 104 $ 3.54 -rose:mary 87.00 32 $ 1.74 -rose:root 26.00 12 $ 0.52 - -total 337.00 154 $ 6.74</screen> - - <para>Estos son los argumentos que puede pasar a &man.pac.8;:</para> - - <variablelist> - <varlistentry> - <term><option>-P<replaceable>impresora</replaceable></option></term> - - <listitem> - <para>De que <replaceable>impresora</replaceable> hacer el resumen. - Esta opción funciona, solo si existe una ruta absoluta, en la - característcia <literal>af</literal> del fichero - <filename>/etc/printcap</filename>.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-c</option></term> - - <listitem> - <para>Ordenar la salida por costo en lugar de por usuario - alfabeticamente.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-m</option></term> - - <listitem> - <para>Ignorar el nombre de host. Con esta opción, - el usuario <username>smith</username> del host - <hostid>alpha</hostid>, es el mismo usuario - <username>smith</username> del host <hostid>gamma</hostid>. Sin - esta opción, se consideran usuarios diferentes.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-p<replaceable>precio</replaceable></option></term> - - <listitem> - <para>Computar cargos con tal <replaceable>precio</replaceable> - en dólares por página o por pie, en lugar del - precio tomado de la característica <literal>pc</literal> - del fichero <filename>/etc/printcap</filename>, o dos centavos - (precio por default). Puede indicar el - <replaceable>precio</replaceable> como un numero de punto - flotante.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-r</option></term> - - <listitem> - <para>Invertir el orden de acomodo.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-s</option></term> - - <listitem> - <para>Crear un fichero de resumen y reiniciar el fichero contador. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term><replaceable>nombre</replaceable> - <replaceable>…</replaceable></term> - - <listitem> - <para>Imprimir la información del usuario - <replaceable>nombre</replaceable> unicamente.</para> - </listitem> - </varlistentry> - </variablelist> - - <para>En el resumen que genera &man.pac.8; por default, podrá - observar el numero de páginas impresas por cada usuario desde - diferentes hosts. Si en su sitio, el host no es importante (por que - los usuarios pueden usar cualquier host), ejecute - <command>pac -m</command>, para producir el siguiente resumen:</para> - - <screen> Login pages/feet runs price -andy 2.00 1 $ 0.04 -kelly 182.00 105 $ 3.64 -mary 118.00 35 $ 2.36 -root 26.00 12 $ 0.52 -zhang 9.00 1 $ 0.18 - -total 337.00 154 $ 6.74</screen> - - - <para>Para calcular el monto adeudado, &man.pac.8; utiliza la - característica <literal>pc</literal> del fichero - <filename>/etc/printcap</filename> (que por default utiliza 200, o - 2 centavos por página). Especifique en cientos de centavos - el precio a cobrar por página o por pie, que desea cobrar, en - esta característica. Puede reemplazar este valor cuando ejecuta - &man.pac.8; con la opción <option>-p</option>. Las unidades de - esta opción estan expresadas en dólares, y no en cientos - de centavos. Por ejemplo, - - <screen>&prompt.root; <userinput>pac -p1.50</userinput></screen> - - hace que cada página tenga un costo de un dolar con cincuenta - centavos. Realmente se puede exceder en las utilidades usando esta - opción.</para> - - <para>Finalmente, ejecutando <command>pac -s</command> puede guardar la - el resumen, en un fichero, que es nombrado al igual que el fichero - contador de la impresora, pero con <literal>_sum</literal> al - inicio del fichero. Posteriormente reinicia el fichero contador. - Cuando ejecuta &man.pac.8; nuevamente, lee el fichero resumen, para - obtener los totales y posteriormente añade la información - del fichero contador normal.</para> - </sect3> - - <sect3> - <title>¿Cómo Contabilizar las Páginas - Impresas?</title> - - <para>Para efecto de que pueda obtener un conteo más cercano a la - realidad, necesita poder determinar cuanto papel utiliza cada trabajo. - Este es el problema esencial del conteo de impresiones.</para> - - <para>Para impresiones en texto, este problema no es tan difícil - de resolver: puede contabilizar el numero de líneas que tiene un - trabajo y dividirlas entre el numero de líneas totales por - página que maneja la impresora. No olvide contabilizar los - retrocesos del fichero que sobreimprimen líneas, o de las largas - líneas lógicas que se justifican en en una o más - líneas físicas.</para> - - <para>El filtro de texto <command>lpf</command> (introducido en <link - linkend="printing-advanced-lpf">lpf: un Filtro de Texto</link>) toma - en cuenta todas estas cosas cuando hace el conteo. Si usted esta - escribiendo un filtro de texto que requiere contabilizar, quizás - desee examinar el código fuente del <command>lpf</command>. - </para> - - <para>Pero, ¿Cómo manejar otros formatos?</para> - - <para>Bueno, para conversiones DVI-a-LaserJet o DVI-a-PostScript, puede - hacer que su filtro pase la información de salida a - <command>dvilj</command> o <command>dvips</command> y ver cuantas - páginas fueron convertidas. Puede hacer cosas similares con - otros formatos y filtros de conversión.</para> - - <para>Pero estos metodos sufren del hecho de que la impresora puede no - imprimir estas páginas. Po ejemplo, se pueden atorar, acabarse - la tinta, o explotar—y el usuario de todas formas se le - cobrará.</para> - - <para>Entonces, ¿qué puede hacer?</para> - - <para>Sólo existe una forma <emphasis>segura</emphasis> de llevar - un conteo <emphasis>confiable</emphasis>. Adquiera una impresora que - pueda indicarle cuanto papel utiliza, y conectela por medio de un - puerto serial o en red. Casi todas las impresoras PostScript cuentan - con soporte para esto. Existen otras marcas u modelos que - también cuentan con el soporte (por ejemplo, las impresoras en - red Imagen laser). Modifique los filtros de estas impresoras para que - lleven un conteo de las oáginas impresas y que almacenen los - registros basados en el valor <emphasis>only</emphasis>. No se - requiere de un conteo de líneas o de examinar el fichero de - errores.</para> - - <para>Claro esta que usted puede ser muy generoso y no cobrar por las - impresiones.</para> - </sect3> - </sect2> </sect1> - + <sect1 id="printing-using"> - <title>Uso de las Impresoras</title> - - <indexterm> - <primary>impresora</primary> - <secondary>uso</secondary> - </indexterm> - <para>Esta sección le indica como usar las impresoras que ha instalado - con FreeBSD. Aqui tenemos los comandos de usuario mas comunes:</para> - - <variablelist> - <varlistentry> - <term>&man.lpr.1;</term> - - <listitem> - <para>Imprime trabajos</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>&man.lpq.1;</term> - - <listitem> - <para>Verifica los trabajos pendientes</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>&man.lprm.1;</term> - - <listitem> - <para>Elimina un trabajo de la cola de impresión</para> - </listitem> - </varlistentry> - </variablelist> + <title>Cómo utilizar impresoras</title> - <para>También se cuenta con un comando de administración, - &man.lpc.8;, descrito en la sección <link linkend="printing-lpc"> - Administración de la Cola de Impresión de - <application>LPD</application></link>, usado para controlar las - impresoras y sus peticiones.</para> - - <para>Las tres opciones &man.lpr.1;, &man.lprm.1;, y &man.lpq.1;, aceptan el - argumento <option>-P<replaceable>impresora</replaceable></option> para - especificar en que impresora realizar la impresión/petición, - de acuerdo a lo indicado en <filename>/etc/printcap</filename>. Esto le - permite imprimir, remover o consultar los trabajos en varias impresoras. - Si no usa el argumento <option>-P</option>, estos comandos haran uso de la - impresora especificada en la variable de entorno <envar>PRINTER</envar>. - Finalmente, si no cuenta con la variable de entorno <envar>PRINTER</envar> - definida, estos comandos utilizarán la impresora por default, que - es <literal>lp</literal>.</para> - - <para>Por lo tanto, el termino <emphasis>impresora por default</emphasis>, - hace referencia a la impresora definida en la variable de entorno - <envar>PRINTER</envar>, o en su defecto a la impresora nombrada - <literal>lp</literal>, cuando no este definida la variable de entorno - <envar>PRINTER</envar>.</para> - - <sect2 id="printing-lpr"> - <title>Trabajos de Impresión</title> - - <para>Para imprimir un fichero, teclee:</para> - - <screen>&prompt.user; <userinput>lpr <replaceable>fichero</replaceable> <replaceable>...</replaceable></userinput></screen> - - <indexterm><primary>imprimir</primary></indexterm> - <para>Lo anterior imprimirá los ficheros nombrados, en la impresora - por default. Si no indica el nombre del fichero, &man.lpr.1; - leerá los datos a imprimir de la entrada estandar. Por ejemplo, - este comando imprime algunos ficheros importantes del sistema:</para> - - <screen>&prompt.user; <userinput>lpr /etc/host.conf /etc/hosts.equiv</userinput></screen> - - <para>Para seleccionar una impresora, teclee:</para> - - <screen>&prompt.user; <userinput>lpr -P <replaceable>nombre-de-la-impresora</replaceable> <replaceable>fichero</replaceable> <replaceable>...</replaceable></userinput></screen> - - <para>Este ejemplo imprime una larga lista del directorio actual, en la - impresora nombrada <literal>rattan</literal>:</para> - - <screen>&prompt.user; <userinput>ls -l | lpr -P rattan</userinput></screen> - - <para>En virtud de que no se le paso fichero alguno para imprimir a - &man.lpr.1;, <command>lpr</command> toma los datos de la entrada - estandar, que en este caso es la salida del comando <command>ls - -l</command>.</para> - - <para>EL comando &man.lpr.1; también puede aceptar gran variedad de - opciones para controlar el formato, aplicar conversiones a los ficheros, - generar copias multiples, etc.. Para mayor información, vea la - sección <link linkend="printing-lpr-options">Opciones de - Impresión</link>.</para> - </sect2> - - <sect2 id="printing-lpq"> - <title>Verificando los Trabajos</title> - - <indexterm><primary>trabajos de impresión</primary></indexterm> - <para>Cuando usted utiliza &man.lpr.1; para imprimir, los datos que desea - imprimir se colocan juntos en un paquete llamado <quote>trabajo de - impresión</quote>, el cual es enviado al sistema de cola de - <application>LPD</application>. Cada impresora cuenta con un orden de - impresión de trabajos, y su trabajo espera su turno en este orden, - junto con otros trabajos suyos y de otros usuarios. El criterio del - orden será los primeros-en-llegar son los primeros-en-salir. - </para> - - <para>Para ver los trabajos pendientes de la impresora por default, teclee - &man.lpq.1;. Para una impresora en especial, use la opción - <option>-P</option>. Por ejemplo, el comando - - <screen>&prompt.user; <userinput>lpq -P bamboo</userinput></screen> - - le muestra los trabajos pendientes de la impresora - <literal>bamboo</literal>. Aqui tenemos un ejemplo de la salida del - comando <command>lpq</command>:</para> - - <screen>bamboo is ready and printing -Rank Owner Job Files Total Size -active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes -2nd kelly 10 (standard input) 1635 bytes -3rd mary 11 ... 78519 bytes</screen> - - <para>Esto muestra que hay tres trabajos en espera, para - <literal>bamboo</literal>. El primer trabajo enviado por el usuario - kelly, tiene asignado en <quote>numero de trabajo</quote> 9. Cada - trabajo en una impresora, se le asigna un numero único. La - mayor parte del tiempo puede ignorar el numero de trabajo, pero este - será necesario en caso de que desee cancelar el trabajo; vea - la sección <link linkend="printing-lprm">Eliminando - Trabajos</link> para mas detalles al respecto.</para> - - <para>El trabajo numero nueve consiste en dos ficheros; al pasar varios - trabajos a &man.lpr.1;, estos son tratados como parte de un solo - trabajo. Este es el trabajo actual, activo (note la palabra - <literal>active</literal> bajo la columna <quote>Rank</quote>), que - quiere decir, que la impresora debe estar imprimiendo este trabajo. El - segundo trabajo consiste en datos pasados al comando &man.lpr.1; por la - entrada estandar. El tercer trabajo proviene del usuario - <username>mary</username>; que es un trabajo mucho mas grande. La ruta - que esta tratando de ser descrita es muy larga, de tal forma que - &man.lpq.1; solo lo representa con tres puntos.</para> - - <para>La primer línea de la salida de &man.lpq.1; también es - de utilidad: esta le indica que esta haciendo la impresora en este - momento (o cuando menos, que es lo que <application>LPD</application> - piensa que la impresora esta haciendo).</para> - - <para>El comando &man.lpq.1; tambien cuenta con la opción - <option>-l</option>, para generar una salida mas detallada. Aqui tenemos - un ejemplo de <command>lpq -l</command>:</para> - - <screen>waiting for bamboo to become ready (offline ?) -kelly: 1st [job 009rose] - /etc/host.conf 73 bytes - /etc/hosts.equiv 15 bytes - -kelly: 2nd [job 010rose] - (standard input) 1635 bytes - -mary: 3rd [job 011rose] - /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes</screen> - </sect2> - - <sect2 id="printing-lprm"> - <title>Eliminando Trabajos</title> - - <para>Si cambia de parecer con respecto a imprimir un trabajo, puede - eliminarlo de los trabajos pendientes, con el comando &man.lprm.1;. - Incluso puede usar el comando &man.lprm.1; para elminar un trabajo - activo, pero algunos o todos los demas trabajos aun seran impresos. - </para> - - <para>Para eliminar un trabajo de la impresoras por default, primero use - &man.lpq.1; para saber el numero de trabajo. Despué teclee:</para> - - <screen>&prompt.user; <userinput>lprm <replaceable>numero-trabajo</replaceable></userinput></screen> - - <para>Para eliminar un trabajo de un a impresora especifica, utilice la - opción <option>-P</option>. El siguiente comando elimina el - trabajo numero 10 de los trabajos pendientes de la impresora - <literal>bamboo</literal>:</para> - - <screen>&prompt.user; <userinput>lprm -P bamboo 10</userinput></screen> - - <para>El comando &man.lprm.1; cuenta con algunas opciones:</para> - - <variablelist> - <varlistentry> - <term>lprm -</term> - - <listitem> - <para>Elimina todos los trabajos (de la impresora por default) y que le - pertenezcan a usted.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>lprm <replaceable>usuario</replaceable></term> - - <listitem> - <para>Elimina todos los trabajos (de la impresora por default) que - pertenecen a <replaceable>usuario</replaceable>. El superusuario puede - eliminar trabajos de otros: usted solo puede eliminar sus trabajos.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>lprm</term> - - <listitem> - <para>Cuando no se pasa ningun nombre de usuario, o <option>-</option>, - en la línea de comando, &man.lprm.1; elimina el trabajo - activo de la impresora por default, si este le pertenece. El - superusuario puede eliminar cualquier trabajo activo.</para> - </listitem> - </varlistentry> - </variablelist> - - <para>Simplemente use la opción <option>-P</option> con las opciones - comentadas, para que apliquen en una impresora especifica. Por ejemplo, - el siguiente comando elimina todos los trabajos pendientes del usuario - actual en la impresora <literal>rattan</literal>:</para> - - <screen>&prompt.user; <userinput>lprm -P rattan -</userinput></screen> - - <note> - <para>SI usted esta trabajando en una red, el comando &man.lprm.1;, solo le - permitira eliminar trabajos del host del cual se enviaron dichos trabajos, - incluso si la impresora esta habilitada desde otros hosts. La siguiente - secuencia de comandos demuestra esto:</para> - - <screen>&prompt.user; <userinput>lpr -P rattan mifichero</userinput> -&prompt.user; <userinput>rlogin orchid</userinput> -&prompt.user; <userinput>lpq -P rattan</userinput> -Rank Owner Job Files Total Size -active seeyan 12 ... 49123 bytes -2nd kelly 13 mifichero 12 bytes -&prompt.user; <userinput>lprm -P rattan 13</userinput> -rose: Permission denied -&prompt.user; <userinput>logout</userinput> -&prompt.user; <userinput>lprm -P rattan 13</userinput> -dfA013rose dequeued -cfA013rose dequeued - </screen> - </note> - </sect2> - - <sect2 id="printing-lpr-options"> - <title>Más alla del Texto Plano: Opciones de Impresión</title> - - <para>El comando &man.lpr.1; cuenta con soporte para multiples opciones que - controlan el formato del texto, conversión de gráficos y - otros formatos, producción de copias multiples, manejo de los - trabajos, y más. Esta sección describe estas opciones. - </para> - - <sect3 id="printing-lpr-options-format"> - <title>Opciones de Formato y Conversión</title> - - <para>Las siguientes opciones de &man.lpr.1; controlan el formato de los - ficheros en el trabajo. Utilice estas opciones si el trabajo no es de - texto plano o si desea dar formato al texto plano por medio de la - utilidad &man.pr.1;.</para> - - <indexterm><primary>TeX</primary></indexterm> - <para>Por ejemplo, el siguiente comando imprime un fichero DVI (desde un - sistema de escritura TeX) llamado <filename>fish-report.dvi</filename> - a la impresora <literal>bamboo</literal>:</para> - - <screen>&prompt.user; <userinput>lpr -P bamboo -d fish-report.dvi</userinput></screen> - - <para>Estas opciones aplican para todos los ficheros dentro del trabajo, por - lo que no debe mezclar (por decir) ficheros DVI y ditroff en el mismo - trabajo. Para hacer esto, envie los trabajos a imprimir por separado, - usando la opción que corresponda a cada trabajo.</para> - - <note> - <para>Todas estas opciones, excepto <option>-p</option> y <option>-T - </option> requieren de filtros de conversión instalados para la - impresora destino. Por ejemplo, la opción <option>-d</option> - requiere de un filtro para DVI. La sección <link - linkend="printing-advanced-convfilters">Filtros de Conversión - </link> le da más detalles al respecto.</para> - </note> - - <variablelist> - <varlistentry> - <term><option>-c</option></term> - - <listitem> - <para>Imprimir ficheros cifplot.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-d</option></term> - - <listitem> - <para>Imprimir ficheros DVI.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-f</option></term> - - <listitem> - <para>Imprimir ficheros de texto FORTRAN.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-g</option></term> - - <listitem> - <para>Imprimir datos plot.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-i<replaceable>numero</replaceable></option></term> - - <listitem> - <para>Sangrar la salida con el <replaceable>numero</replaceable> de - columnas indicado; si omite <replaceable>numero</replaceable>, el - numero será de 8 columnas. Esta opción trabaja bien - solo con algunos filtros de conversión.</para> - - <note> - <para>No debe dejar espacios entre la opción <option>-i</option> - y el numero.</para> - </note> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-l</option></term> - - <listitem> - <para>Imprimir datos de texto literal, incluyendo caracteres de - control.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-n</option></term> - - <listitem> - <para>Imprimir datos ditroff (troff independiente del dispositivo).</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>-p</term> - - <listitem> - <para>Formatear el texto plano con &man.pr.1; antes de imprimir. Vea - &man.pr.1; para más información.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-T <replaceable>titulo</replaceable></option></term> - - <listitem> - <para>Use <replaceable>titulo</replaceable> en la cabecera de - &man.pr.1;, en lugar del nombre del fichero. Esta opción solo - tiene efecto cuando se usa con <option>-p</option>.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-t</option></term> - - <listitem> - <para>Imprimir datos troff.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><option>-v</option></term> - - <listitem> - <para>Imprimir datos raster.</para> - </listitem> - </varlistentry> - </variablelist> - - <para>Aqui tenemos un ejemplo: este comando imprime una bonita y formateada - versión de la página de ayuda de &man.ls.1;, en la impresora - por default:</para> - - <screen>&prompt.user; <userinput>zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t</userinput></screen> - - <para>El comando &man.zcat.1; descomprime la fuente de la página de - ayuda &man.ls.1; y lo pasa al comando &man.troff.1;, que le da formato y - crea la salida GNU troff, la cual es pasada a &man.lpr.1;, que envia el - trabajo a la cola de <application>LPD</application>. Como usamos la - opción <option>-t</option> con &man.lpr.1;, el sistema de cola va - a convertir la salida GNU troff a datos entendibles para la impresora, - cuando se imprime.</para> - </sect3> - - <sect3 id="printing-lpr-options-job-handling"> - <title>Opciones para Manejar los Trabajos</title> - - <para>Las siguientes opciones de &man.lpr.1;, le indican a - <application>LPD</application> que debe manejar el trabajo de - una forma especial:</para> - - <variablelist> - <varlistentry> - <term>-# <replaceable>copias</replaceable></term> - - <listitem> - <para>Producir un numero de <replaceable>copias</replaceable> de cada - fichero en el trabajo, en vez de una sola copia. Un administrador - puede inhabilitar esta oprción para reducir el desgaste de la - impresora y alentar el uso de la fotocopiadora. Vea la sección - <link - linkend="printing-advanced-restricting-copies">Restriccón - de Copias Multiples</link>.</para> - - <para>Este ejemplo imprime tres copias de - <filename>parser.c</filename> seguido de tres copias de - <filename>parser.h</filename> en la impresora por default:</para> - - <screen>&prompt.user; <userinput>lpr -#3 parser.c parser.h</userinput></screen> - </listitem> - </varlistentry> - - <varlistentry> - <term>-m</term> - - <listitem> - <para>Enviar correo después de completar el trabajo. Con esta - opción, el sistema <application>LPD</application> enviara un - correo a su cuenta cuando termina de imprimir. En su mensaje, le - informará si el trabajo termino con exito o si hubo algun - error, y (normalmente) que tipo de error fué.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>-s</term> - - <listitem> - <para>No copie el fichero al directorio de la cola, en su lugar crear - un enlace simbolico.</para> - - <para>Si usted esta imprimiendo un trabajo de gran tamaño, - quizás esta es una buena opción. Esta opción le - ahorra espacio en el directorio de cola (donde su trabajo puede - terminar con el espacio libre donde reside su directorio). Esta - opción también le ahorra tiempo, en virtud de que - <application>LPD</application> no tendrá que copiar todos y - cada uno de los bytes del trabajo al directorio.</para> - - <para>Aunque esto tiene su inconveniente: dado que - <application>LPD</application> estará haciendo uso del fichero - original, no lo podrá modificar o eliminar hasta que termine - la impresión.</para> - - <note> - <para>Si usted esta en un entorno de red, <application>LPD</application> - eventualmente copiará ficheros del host local al host remoto, - así que la opción <option>-s</option> le puede ahorrar - espacio solo en el directorio del host local, no en los remotos. - Aun con esto, la opcion es de gran utilidad.</para> - </note> - </listitem> - </varlistentry> - - <varlistentry> - <term>-r</term> - - <listitem> - <para>Eliminar los ficheros del trabajo, una vez que hayan sido - copiados al directorio de la cola, o después de que hayan sido - impresos, cuando se use la opción <option>-s</option>. Tenga - cuidado con esta opción!</para> - </listitem> - </varlistentry> - </variablelist> - </sect3> - - <sect3 id="printing-lpr-options-misc"> - <title>Opciones de Páginas de Encabezado</title> - - <para>Cuando alguna de las siguientes opciones son pasadas a &man.lpr.1;, - ajustan el texto que normalmente aparece en la página encabezado - del trabajo. Si las páginas de encabezado son suprimidas, estas - opciones no tendrán efecto alguno. Vea la sección <link - linkend="printing-advanced-header-pages">Páginas de - Encabezado</link> para más información sobre la - configuración de las Páginas de Encabezado.</para> - - <variablelist> - <varlistentry> - <term>-C <replaceable>texto</replaceable></term> - - <listitem> - <para>Reemplazar el nombre del host del encabezado con este - <replaceable>texto</replaceable>. Normalmente el nombre del host es el - nombre del host del cual se esta imprimiendo.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>-J <replaceable>texto</replaceable></term> - - <listitem> - <para>Reemplazar el nombre del trabajo en el encabezado con este - <replaceable>texto</replaceable>. Normalmente el nombre del trabajo es - el nombre del primer fichero del trabajo, o <filename>stdin</filename> si - esta imprimendo de la entrada estandar.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term>-h</term> - - <listitem> - <para>No imprimir página de encabezado.</para> - - <note> - <para>En algunos sitios esta opción puede no tenere efecto alguno, - debido al metodo usado para generar las páginas de encabezado. - Vea la sección <link - linkend="printing-advanced-header-pages">Páginas de - Encabezado</link> para más detalles.</para> - </note> - </listitem> - </varlistentry> - </variablelist> - </sect3> - </sect2> - - <sect2 id="printing-lpc"> - <title>Administración de la Cola de Impresión de - <application>LPD</application></title> - - <para>Como administrador de sus impresoras, usted deberá - instalarlas, configurarlas, y probarlas. Con el comando &man.lpc.8; - usted podrá interactuar con las impresoras de una forma más - completa. Con &man.lpc.8; usted podrá</para> - - <itemizedlist> - <listitem> - <para>Iniciar y detener las impresoras</para> - </listitem> - - <listitem> - <para>Habilitar y deshabilitar sus trabajos pendientes</para> - </listitem> - - <listitem> - <para>Modificar el orden de los trabajos pendientes.</para> - </listitem> - </itemizedlist> - - <para>Primero, una nota de terminología: si una impresora es - <emphasis>detenida</emphasis>, no podrá contar con una cola de - trabajos pendientes. Los usuarios podrán enviar sus trabajos, - que quedarán en espera hasta que la impresora se - <emphasis>iniciada</emphasis> o su cola de trabajos pendientes sea - purgada.</para> - - <para>Si la cola de trabajos pendientes es - <emphasis>deshabilitada</emphasis>, ningun usuario (excepto - <username>root</username>) podrá enviar trabajos a la impresora. - Una cola de trabajos pendientes <emphasis>habilitada</emphasis>, - permitirá el envio de trabajos. Una impresora puede ser - <emphasis>iniciada</emphasis> para una cola de trabajos que esta - deshabilitada, en cuyo caso continuará imprimiendo los trabajos de - la cola de trabajos pendientes, hasta que ya no exista ninguno.</para> - - <para>En general, usted debe de contar con privilegios de - <username>root</username> para hacer uso del comando &man.lpc.8;. Los - usuarios comunes solo pueden usar &man.lpc.8; para verificar el - estatus de una impresora y para reiniciar una impresora detenida.</para> - - <para>Aqui tenemos un resumen de los comandos de &man.lpc.8;. La mayor - parte de estos comandos usan el argumento - <replaceable>nombre-impresora</replaceable> para indicarle en cual debe - operar. Como este argumento puede usar <literal>all</literal>, para - indicarle que opere en todas las impresoras listadas en el fichero - <filename>/etc/printcap</filename>.</para> - - <variablelist> - <varlistentry> - <term><command>abort - <replaceable>nombre-impresora</replaceable></command></term> - - <listitem> - <para>Cancelar el trabajo actual y detener la impresora. Los usuarios - podrán aun enviar sus trabajos si la cola de pendientes esta - habilitada.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><command>clean - <replaceable>nombre-impresora</replaceable></command></term> - - <listitem> - <para>Eliminar ficheros viejos del directorio de cola de - impresión. Ocasionalmente, los ficheros que ya han sido - impresos no son eliminados correctamente por - <application>LPD</application>, particularmente si hubo errores durante - la impresión o si se realizaron otros trabajos administrativos - durante la misma. Este comando localiza ficheros que no pertenecen al - directorio y los elimina.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><command>disable - <replaceable>nombre-impresora</replaceable></command></term> - - <listitem> - <para>Deshabilita la cola de pendientes para nuevos trabajos. Si la - impresora esta activa, se continuan imprimiendo los trabajos en la - cola de pendientes. El superusuario (<username>root</username>) - siempre podrá enviar trabajos, incluso cuando se use esta - opción.</para> - - <para>Este es un comando útil cuando se esta probando una nueva - impresora o instalando un filtro: deshabilitar la cola de pendientes y - enviar los trabajos como <username>root</username>. Otros usuarios no - podrán enviar trabajos, hasta que la impresora haya sido - configurada correctamente y se re-habilite la cola de pendientes, con - el comando <command>enable</command>.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><command>down <replaceable>nombre-impresora</replaceable> - <replaceable>mensaje</replaceable></command></term> - - <listitem> - <para>Usar el comando down para una impresora, equivale a usar el comando - <command>disable</command> seguido del comando <command>stop</command>. - El <replaceable>mensaje</replaceable> que se ingrese, aparecerá - como el estatus de la impresora, cada vez que un usuario verifique su - estatus con &man.lpq.1; o con <command>lpc status</command>.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><command>enable - <replaceable>nombre-impresora</replaceable></command></term> - - <listitem> - <para>Habilitar la cola de pendientes. Los usuarios pueden enviar sus - trabajos pero la impresora no imprimira nada hasta que se - inicializada.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><command>help - <replaceable>nombre-del-comando</replaceable></command></term> - - <listitem> - <para>Mostrar la ayuda del comando - <replaceable>nombre-del-comando</replaceable>. Si no se indica el - <replaceable>nombre-del-comando</replaceable>, se muestra un resumen - de los comandos disponibles.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><command>restart - <replaceable>nombre-impresora</replaceable></command></term> - - <listitem> - <para>ReIniciar la impresora. Los usuarios comunes pueden usar esta - opción en caso de que por alguna razón - <application>LPD</application> se paralice, pero no pueden iniciar una - impresora detenida con algunos de los comandos <command>stop</command> - o <command>down</command>. El comando <command>restart</command> es - equivalente a ejecutar <command>abort</command> seguido del comando - <command>start</command>.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><command>start - <replaceable>nombre-impresora</replaceable></command></term> - - <listitem> - <para>Iniciar la impresora. La impresora comenzará a imprimir - los trabajos en la cola de pendientes.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><command>stop - <replaceable>nombre-impresora</replaceable></command></term> - - <listitem> - <para>Detiene la impresora. La impresora terminará el trabajo - actual y dejará de imprimir. Aun cuando la impresora esta - detenida, los usuarios pueden enviar sus trabajos a la cola de - pendientes de la impresora.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><command>topq <replaceable>nombre-impresora</replaceable> - <replaceable>trabajo-o-usuario</replaceable></command></term> - - <listitem> - <para>Modificar el orden de la cola de pendientes de la impresora - <replaceable>nombre-impresora</replaceable>, colocando los trabajos con - el identificador <replaceable>trabajo</replaceable> o que pertenecen al - usuario <replaceable>usuario</replaceable>, en primer lugar de la cola. - Para este comando no puede hacer uso de la opción - <literal>all</literal> en lugar de - <replaceable>nombre-impresora</replaceable>.</para> - </listitem> - </varlistentry> - - <varlistentry> - <term><command>up - <replaceable>nombre-impresora</replaceable></command></term> - - <listitem> - <para>Usar el comando up en una impresora; es lo opuesto al comando - <command>down</command>. Equivalente a <command>start</command> - seguido del comando <command>enable</command>.</para> - </listitem> - </varlistentry> - </variablelist> - - <para>&man.lpc.8; acepta estos comandos desde la línea de comandos. - Si no ingresa aglun comando, &man.lpc.8; entra en modo interactivo, donde - puede ingresar los comandos hasta que teclee <command>exit</command>, - <command>quit</command> o fin-del-archivo (EOF).</para> - </sect2> + <para>Pendiente de traducción.</para> </sect1> - + <sect1 id="printing-lpd-alternatives"> - <title>Alternativas al Sistema de Impresión Estándar</title> - - <para>Si ha estado leyendo este manual desde el principio, para este momento - usted ha aprendido practicamente todo lo que debe saber del sistema - <application>LPD</application> que viene con FreeBSD. Y ha podido observar - algunas de sus debilidades, lo que naturalmente nos lleva a la pregunta: - <quote>¿Qué otros sistema de impresión existen (y que - trabajen bajo FreeBSD)?</quote>.</para> + <title>Alternativas a LPD</title> - <variablelist> - <varlistentry> - <term>LPRng</term> + <para>Pendiente de traducción</para> - <indexterm><primary>LPRng</primary></indexterm> - <listitem> - <para><application>LPRng</application>, que presumiblemente significa - <quote>LPR: the Next Generation</quote> (<quote>LPR: la Siguiente - Generación</quote>), es PLP completamente hecho de nuevo. Patrick Powell - y Justin Mason (el encargado principal de PLP) colaboraron en crear - <application>LPRng</application>. El principal sitio de - <application>LPRng</application> es <ulink - url="http://www.astart.com/lprng/LPRng.html">http://www.astart.com/lprng/LPRng.html</ulink>.</para> - </listitem> - </varlistentry> - </variablelist> </sect1> - <sect1 id="printing-troubleshooting"> - <title>Resolución de Problemas</title> - - <para>Una vez que hizo la simple prueba con &man.lptest.1;, puede ser que - haya obtenido uno de los siguientes resultados, en vez de la correcta - impresión:</para> - - <variablelist> - <varlistentry> - <term>Trabajo, después de un tiempo; o no expulso completamente - la hoja.</term> - - <listitem> - <para>La impresora llevo a cabo la impresión, pero espero bastante - o bien finalmente no hizo nada. De hecho, es posible que haya sido - necesario presionar en su impresora el botón para poner a la - impresora EN LINEA o bien de ALIMENTACION DE PAGINA.</para> - - <para>Si este es el caso, su impresora esperaba a ver si exisitian - más datos para imprimir, antes de comenzar con la - impresión. Para arreglar este problema puede hacer que su - filtro de texto envie al final un caracter de ALIMENTACION DE PAGINA o - cualquiera que sea necesario para la impresora. Esto normalmente es - suficiente para que la impresora imprima todos los datos restantes - en su buffer interno. También es recomendable verificar que cada - trabajo enviado se haya impreso en una página completa, de tal - forma que el siguiente trabajo no comience en la mitad de la - última página del trabajo previo.</para> - - <para>El siguiente ShellScript se puede utilizar como reemplazo de - <filename>/usr/local/libexec/if-simple</filename>, para imprimir un - caracter de alimentación de página:</para> - - <programlisting>#!/bin/sh -# -# if-simple - Filtro de texto simple para lpd -# Instalado en /usr/local/libexec/if-simple -# -# Simplemente manda la entrada a la salida estandar. -# Ignora los argumentos del filtro. -# Escribe un caracter de alimentacion de pagina (\f) despues de imprimir. - -/bin/cat && printf "\f" && exit 0 -exit 2</programlisting> - </listitem> - </varlistentry> - - <varlistentry> - <term>Se produce un <quote>efecto de escalera.</quote></term> - - <listitem> - <para>Usted obtiene la siguiente impresión:</para> - - <programlisting>!"#$%&'()*+,-./01234 - "#$%&'()*+,-./012345 - #$%&'()*+,-./0123456</programlisting> - - <indexterm><primary>MS-DOS</primary></indexterm> - <indexterm><primary>OS/2</primary></indexterm> - <indexterm><primary>ASCII</primary></indexterm> - <para>Usted es otra víctima del <emphasis>efecto de - escalera</emphasis>, causada por el conflicto de interpretación, - sobre cual caracter indica la nueva línea. Los sistemas - operativos estilo-Unix, usan un caracter sencillo: código - ASCII 10, alimentación de línea (LF). MS-DOS, OS/2 y - otros utilizan un par de caracteres, código ASCII 10 - <emphasis>y</emphasis> código ASCII 13 (retorno de carrete o - CR). Muchas impresoras usan la forma de MS-DOS, para representar los - saltos de líneas.</para> - - <para>Cuando usted imprime con FreeBSD, su texto hace uso del caracter de - nueva línea. La impresora, una vez que detecta el caracter de - nueva línea, avanza el papel una línea, pero manteniendo - la misma posición horizontal, para la impresión del - siguiente caracter. Para eso es el caracter de retorno de carrete: para - mover la posición horizontal al borde izquierdo del papel.</para> - - <para>Aqui tenemos lo que FreeBSD desea que haga su impresora:</para> - - <informaltable frame="none"> - <tgroup cols="2"> - <tbody> - <row> - <entry>Impresora recibe CR</entry> - <entry>Impresora imprime CR</entry> - </row> - - <row> - <entry>Impresora recibe LF</entry> - <entry>Impresora imprime CR + LF</entry> - </row> - </tbody> - </tgroup> - </informaltable> - - <para>Aqui tenemos algunas formas de llevar esto a cabo:</para> - - <itemizedlist> - <listitem> - <para>Usar los botones de configuración de la impresora o el - panel de control, para modificar su interpretación de estos - caracteres. Verifique el manual de su impresora para ver como - hacer esto.</para> - - <note> - <para>Si cuenta con otro sistema operativo en su maquina, ademas de - FreeBSD, quizás sea necesario - <emphasis>reconfigurar</emphasis> la impresora, para usar la - interpretación de los caracteres de CR y LF del otro sistema - operativo. Puede escoger una de las otras soluciones que se - comentan más adelante.</para> - </note> - </listitem> - <listitem> - <para>Puede hacer que el controlador serial de FreeBSD, - automáticamente convierta LF en CR+LF. Claro esta, que esta - alternativa funciona <emphasis>solo</emphasis> en impresoras - seriales. Para habilitar esta habilidad, establezca el bit - <literal>CRMOD</literal>, en la característica - <literal>fs</literal> del fichero <filename>/etc/printcap</filename> - para la impresora.</para> - </listitem> - - <listitem> - <para>Envie un <emphasis>código de escape</emphasis> a la - impresora para que temporalmente de un tratamiento diferente a - los caracteres LF. Consulte el manual de su impresora para ver - los códigos de escape soportados por su impresora. Una vez - que localice el código correcto, modifique su filtro de - texto, para que se envie este código primero y después - el trabajo a imprimir.</para> - - <indexterm><primary>PCL</primary></indexterm> - <para>Aqui tenemos un ejemplo de un filtro de texto, para impresoras - compatibles con PCL de Hewlett-Packard. Este filtro hace que la - impresora trate a LF como LF + CR; posteriormente envia el trabajo - de impresión; y por último envia un caracter de - alimentación de página, para expulsar la última - página del trabajo. Este filtro debiese funcionar con casi - todas las impresoras Hewlett Packard.</para> - - <programlisting>#!/bin/sh -# -# hpif - Filtro de texto simple para lpd e impresoras compatibles con HP-PCL -# Instalado en /usr/local/libexec/hpif -# -# Pasa la entrada estandar a la salida estandar. -# Ignora todos los argumentos del filtro. -# Le indica a la impresora que debe tratar a LF como si fuera CR+LF. -# Expulsa la ultima pagina cuando ha terminado. - -printf "\033&k2G" && cat && printf "\033&l0H" && exit 0 -exit 2</programlisting> - - <para>Aqui tenemos un ejemplo de <filename>/etc/printcap</filename> - para un host llamado <hostid>orchid</hostid>. Solo cuenta con una - impresora conectada al puerto paralelo, una Hewlett Packard LaserJet - 3Si, llamada <literal>teak</literal>. Se esta usando el script - anterior como filtro de texto:</para> - - <programlisting># -# Fichero /etc/printcap del host orchid -# -teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\ - :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\ - :if=/usr/local/libexec/hpif:</programlisting> - </listitem> - </itemizedlist> - </listitem> - </varlistentry> - - <varlistentry> - <term>Cada línea se sobreescribe.</term> - - <listitem> - <para>La impresora no avanza ninguna línea. Todas las líneas - son impresas una sobre otra en un solo renglón.</para> - - <para>Este problema es lo <quote>opuesto</quote> al efecto de escalera, - descrito anteriormente, y es poco común. En algun lugar, los - caracteres de LF, que usa FreeBSD para indicar un salto de línea, - la impresora los identifica como CR, de tal forma que regresa el punto - de impresión al borde del papel, pero sin saltar al siguiente - renglón.</para> - - <para>Utilice los botones de la impresora o el panel de control, para - forzar a que la impresora interprete de la siguiente manera los - caracteres LF y CR:</para> - - <informaltable frame="none"> - <tgroup cols="2"> - <thead> - <row> - <entry>Impresora recibe</entry> - <entry>Impresora imprime</entry> - </row> - </thead> - - <tbody> - <row> - <entry>CR</entry> - <entry>CR</entry> - </row> - - <row> - <entry>LF</entry> - <entry>CR + LF</entry> - </row> - </tbody> - </tgroup> - </informaltable> - </listitem> - </varlistentry> - - <varlistentry> - <term>Al imprimir se pierden caracteres.</term> - - <listitem> - <para>Mientras imprime, algunos caracteres no son impresos en cada - línea. El problema puede agravarse conforme se usa la - impresora, perdiendo más y más caracteres.</para> - - <para>El problema es que la impresora no puede mantener el ritmo al cual - la computadora envia los datos por medio de la línea serial - (este problema no se debiese presentarse en impresoras conectadas al - puerto paralelo). Existen dos formas de solucionar este problema:</para> - - <itemizedlist> - <listitem> - <para>Si la impresora cuenta con soporte para el control de flujo - XON/XOFF, haga que FreeBSD lo utilice, al especificar el bit TANDEM - en la característica <literal>fs</literal>.</para> - </listitem> - - <listitem> - <para>Si la impresora cuenta con soporte para el control de flujo - externo (carrier), especifique el bit <literal>MDMBUF</literal> en - la característica <literal>fs</literal>. Asegurese de que - el cable utilizado para conectar la impresora a la computadora cuenta - con soporte para este tipo de control de flujo.</para> - </listitem> - - <listitem> - <para>Si la impresora no cuenta con soporte para el control de flujo, - use una combinación de los bits <literal>NLDELAY</literal>, - <literal>TBDELAY</literal>, <literal>CRDELAY</literal>, - <literal>VTDELAY</literal> y <literal>BSDELAY</literal> en la - característica <literal>fs</literal>, para añadir el - retraso apropiado en la cadena de información enviada a la - impresora.</para> - </listitem> - </itemizedlist> - </listitem> - </varlistentry> - - <varlistentry> - <term>Solo imprime basura.</term> - - <listitem> - <para>La impresora imprime lo que parece ser basura al azar, pero no el - texto deseado.</para> - - <para>Esto normalmente es otro síntoma de una configuración - incorrecta en los parámetros de comunicación de una - impresora serial. Verifique el rango de bps en la característica - <literal>br</literal> y la paridad de bits en <literal>fs</literal> y - <literal>fc</literal>; asegurese de que la impresora use los mismos datos - especificados en el fichero <filename>/etc/printcap</filename>.</para> - </listitem> - </varlistentry> + <sect1 id="printing-troubleshooting"> + <title>Solución de problemas</title> - <varlistentry> - <term>No sucede nada.</term> + <para>Pendiente de traducción</para> - <listitem> - <para>Si no sucede nada, probablemente el problema es con FreeBSD y no con - su hardware. Incluya un fichero de registros (log), con la - característica <literal>lf</literal>, en la entrada de su - impresora en el fichero <filename>/etc/printcap</filename>. Por ejemplo, - aqui esta la entrada de <literal>rattan</literal>, con la - característica <literal>lf</literal> :</para> + </sect1> - <programlisting>rattan|line|diablo|lp|Diablo 630 Line Printer:\ - :sh:sd=/var/spool/lpd/rattan:\ - :lp=/dev/lpt0:\ - :if=/usr/local/libexec/if-simple:\ - :lf=/var/log/rattan.log</programlisting> - <para>Posteriormente, intente imprimir de nuevo. Verifique el fichero de - registros (en nuestro ejemplo, <filename>/var/log/rattan.log</filename>) - para buscar cualquier mensaje de error que aparezca. Basado en ese - mensaje trate de resolver el problema.</para> - <para>Si no especifica la característica <literal>lf</literal>, - entonces <application>LPD</application> utilizará - <filename>/dev/console</filename> como la salida por default.</para> - </listitem> - </varlistentry> - </variablelist> - </sect1> </chapter> <!-- |