Filtros de impresión con Ghostscript

A. Gustavo González agonzale@cica.es 26 de Septiembre 1999 En este artículo se introducen los fundamentos para componer filtros de impresión mediante el programa Ghostscript.

Índice General

1 ¿Por qué este documento? 1 2 Lo primero es lo primero: ¿Por qué necesito Ghostscript para imprimir en linux? 2 3 La orden gs y sus opciones 2

3.1 Entradas a gs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3.2 Dispositivo de salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3.3 Resolución de la impresión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.4 Salida a un fichero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.5 Escogiendo el tamaño de papel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.6 Otras opciones a considerar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

4 ¿Qué es un filtro de impresión y cómo se construye? 4 5 Filtros mágicos 6

5.1 Magicfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 5.2 Apsfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 5.3 Filtros de impresión Red Hat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

6 El controlador uniprint 9 7 Impresión remota 10 8 Créditos 11 9 Anexo: El INSFLUG 11

1 ¿Por qué este documento?

Hace tiempo leí un mini-Cómo sobre filtros de impresión maquetado por nuestro admirado compañero Ismael Olea olea@iname.com, extraído de la red Fidonet, y me dejó con la miel en los labios, pues era muy corto. En este documento, cuyo carácter es fundamentalmente didáctico – pensado para usuarios noveles de linux que ya conocen el funcionamiento de la impresión por spooling – intento presentar de modo breve y resumido qué es Ghostcript y cómo usarlo para elaborar filtros de impresión.

2 Lo primero es lo primero: ¿Por qué necesito Ghostscript para imprimir en linux?

Pues porque el formato estándar de los ficheros imprimibles en UNIX es PostScript (PS), pero no todo el mundo tiene una impresora PS. Ghostscript, escrito por Peter Deutsch, fundador de Aladdin Enterprises, es el intérprete por excelencia de documentos en formato PS (y también PDF). Ghostscript permite presentar datos PS y PDF en la pantalla y además traducirlos de manera que puedan ser impresos en una impresora con capacidad gráfica mediante el uso del controlador de dicha impresora. Como afortunadamente, además, disponemos de herramientas para convertir otros formatos, tanto de documentos (como TEX, HTML, etc.) como de figuras (como GIF, TIFF, etc.) en PS, basta con diseñar filtros de impresión combinando el conversor de formato con el programa Ghostscript mediante tuberías («pipes», |).

Aladdin Enterprises mantiene las nuevas versiones de Ghostscript hasta que alcanzan una cierta «edad», y luego las libera a la Fundación de Software libre (FSF, Free Software Foundation) para que se distribuya como GNU Ghostscript. Estas versiones son las que se distribuyen «libres de cargo» en las distribuciones de Linux. La versión Ghostscript 5.1 es de las últimas liberadas y funciona de perlas para la creación de filtros de impresión.

3 La orden gs y sus opciones

El programa Ghostcript se ejecuta a través de la orden gs con diferentes opciones

3.1 Entradas a gs

Además de las opciones a considerar, gs actúa sobre un fichero de entrada en formato PS:

     gs [opciones] fichero.ps

Donde fichero.ps es el fichero de entrada, pero uno también puede conectar una entrada por tubería (en el sentido de «to pipe») en Ghostscript utilizando el nombre de fichero especial «-», como por ejemplo

     {programa convertidor a formato PS} | gs [opciones] -

La presencia del argumento «-» al final de la línea de órdenes indica a Ghostscript que lea la entrada estándar (STDIN ) desde un fichero o tubería en lugar de desde el teclado. Es la opción de recibo cuando se diseña un filtro de entrada para imprimir en PS.

El fichero «-» presenta las siguientes características:

• Cuando Ghostscript termina de leer la tubería, deja de estar en modo interactivo. Por ello, «-» es útil únicamente como último argumento de la línea de órdenes.

• «-» no puede usarse para conectar con una entrada PDF en tubería.

3.2 Dispositivo de salida

Ghostscript dispone de una serie de dispositivos controladores para diversos tipos de impresora. Si invocamos gs -h, nos aparecerá gran cantidad de información sobre nuestra versión instalada de Ghostscript, entre la que encontraremos los dispositivos controladores. He aquí el listado correspondiente a dicha orden:

3. La orden gs y sus opciones 3

GNU Ghostscript 5.10 (1998-12-17)
Copyright (C) 1997 Aladdin Enterprises, Menlo Park, CA.  All rights reserved.
Usage: gs [switches] [file1.ps file2.ps ...]
Most frequently used switches: (you can use # in place of =)
-dNOPAUSE           no pause after page   | -q       `quiet', fewer messages
-g<width>x<height>  page size in pixels   | -r<res> pixels/inch resolution
-sDEVICE=<devname>  select device         | -dBATCH  exit after last file
-sOutputFile=<file> select output file: - for stdout, |command for pipe,
                                         embed %d or %ld for page #
Input formats: PostScript PostScriptLevel1 PostScriptLevel2 PDF
Available devices:
   x11 x11alpha x11cmyk x11gray2 x11mono lvga256 vgalib t4693d2 t4693d4
   t4693d8 tek4696 appledmp ccr lp2563 lbp8 lips3 m8510 necp6 cp50 oce9050
   oki182 okiibm r4081 sj48 xes ln03 la50 la70 la75 la75plus sxlcrt deskjet
   djet500 laserjet ljetplus ljet2p ljet3 ljet4 declj250 paintjet pjetxl
   cdeskjet cdjcolor cdjmono cdj550 cdj500 djet500c dnj650c pj pjxl pjxl300
   hpdj uniprint epson eps9mid eps9high epsonc lq850 lp8000 st800 stcolor
   ap3250 ibmpro bj10e bj200 bjc600 bjc800 ljet3d lj4dith lj5mono lj5gray
   lj250 faxg3 faxg32d faxg4 dfaxhigh dfaxlow pcxmono pcxgray pcx16 pcx256
   pcx24b pcxcmyk pbm pbmraw pgm pgmraw pgnm pgnmraw pnm pnmraw ppm ppmraw
   pkm pkmraw tiffcrle tiffg3 tiffg32d tiffg4 tifflzw tiffpack cif bmpmono
   bmp16 bmp256 bmp16m tiff12nc tiff24nc psmono psgray bit bitrgb bitcmyk
   sgirgb pngmono pnggray png16 png256 png16m cgmmono cgm8 cgm24 jpeg
   jpeggray miff24 mgrmono mgrgray2 mgrgray4 mgrgray8 mgr4 mgr8 pdfwrite
   pswrite epswrite pxlmono pxlcolor nullpage
Search path:
   . : /usr/lib/ghostscript/common : /usr/lib/ghostscript/5.10 :
   /usr/lib/ghostscript/fonts
For more information, see /usr/doc/gs/use.txt.
Report bugs to ghost@aladdin.com; use the form in bug-form.txt.

Así, si disponemos de una impresora HP Deskjet 550C y vamos a imprimir el fichero.ps, haremos:

gs -sDEVICE=cdj550 fichero.ps

3.3 Resolución de la impresión

Algunas impresoras pueden imprimir a diferentes resoluciones (siendo la menor la que se toma por defecto). Para seleccionar la resolución horizontal (num1) y vertical (num2) en pixels por pulgada, se utiliza la opción

-rnum1xnum2
-rnum es equivalente a -rnumxnum (cuando num1=num2=num)

3.4 Salida a un fichero

Si seleccionamos una impresora como dispositivo de salida, Ghostscript también permite controlar a dónde envía el dispositivo su salida. En el sistema DOS, la salida se dirige normalmente a a la impresora (PRN); en UNIX, generalmente se envía a un fichero temporal para su impresión en cola. Para dirigir la salida a un fichero (fichero.out), se utiliza la opción

-sOutputFile=fichero.out

Pero en UNIX, también podemos usar esta opción para enviar la salida a una conexión por tubería, por ejemplo al servidor de impresión, mediante la orden lpr

     -sOutputFile=\|lpr

o enviarlo a la salida estándar (sOutputFile=-) para que, por ejemplo, el demonio lpd tome esos datos de la salida estándar y los entregue a la impresora. Esta es una de las opciones usadas en la construcción de filtros de impresión.

     gs [opciones] -sOutputFile=- -q |...

En este caso es necesario emplear la opción -q (quiet) que evita que el programa Ghostscript escriba mensajes en la salida estándar y se mezclen con la corriente de salida del dispositivo de impresión.

3.5 Escogiendo el tamaño de papel

Ghostscript se distribuye configurado para usar papel «US letter», que es el tamaño de página por defecto, pero existen otros tamaños que se configuran empleando la instrucción -sPAPERSIZE=opción , como por ejemplo

     -sPAPERSIZE=a4
     -sPAPERSIZE=legal

3.6 Otras opciones a considerar

En el caso de construcción de filtros de entrada, hay otras opciones interesantes:

• -dSAFER: Evita que actúen los operadores de borrado o renombrado de ficheros, así como la posibilidad de abrir ficheros en cualquier otro modo que no sea de sólo lectura. Esto es fundamental para el mecanismo de spooling del demonio de impresión.

• -dNOPAUSE: Deshabilita el prompt y la pausa al final de cada página. Se utiliza para producir salidas de impresión o para controlar gs desde otro programa.

• @fichero : Hace que gs lea el fichero y trate su contenido como si fueran líneas de órdenes. Las instrucciones dentro del fichero pueden estar separadas por al menos un espacio en blanco.

4 ¿Qué es un filtro de impresión y cómo se construye?

Antes que nada es necesario recordar el mecanismo de spooling típico de los servidores de impresión en linux. En primer lugar el servidor lpr/lprng copia el fichero a imprimir en el directorio de «spool» (sd) indicado en el fichero /etc/printcap, creando en dicho directorio un fichero de control indicando el trabajo a imprimir, el usuario que solicita el servicio de impresión, parámetros pasados en línea de órdenes, etc. Luego, el demonio de impresión (lpd) comprueba periódicamente si hay ficheros de control en el directorio spool, y si es así, realiza las siguientes tareas:

• Imprime la página de «banner» si no se ha suprimido (con la instrucción sh en el fichero /etc/printcap) y la pasa a través del filtro de salida si lo hay (instrucción of del fichero

     /etc/printcap)

• Si no se indicó al servidor de impresión que empleara algún filtro de impresión en concreto, entonces se utilizará el filtro de entrada, cuya ruta indica el parámetro if del fichero /etc/printcap.

• Al ejecutarse el filtro de entrada, se redirecciona su entrada estándar al fichero de control y su salida estándar a:

– la entrada estándar del filtro de salida (of) cuando lo haya, y la salida de dicho filtro al dispositivo de impresión asociado a la impresora (entrada lp del fichero /etc/printcap)

– al dispositivo de impresión indicado en /etc/printcap

Por lo tanto un filtro de entrada de impresión no es más que un programa (generalmente un guión) que teniendo en su entrada estándar (STDIN ) un fichero en un formato determinado , p. ej., ps (postscript), escribe en su salida estándar (STDOUT ) los códigos necesarios para que la impresora imprima dicho fichero.

Consideremos que disponemos de una impresora HP Laserjet Plus y vamos a escribir algunos filtros. La resolución será de 300x300; el formato de papel, A4; y el controlador de dispositivo es ljetplus.

Vamos a escribir el filtro para ficheros PS como un shell script:

     #!/bin/bash/
     #Filtro de ficheros postscript
     /usr/bin/gs -q -dSAFER -dNOPAUSE -sDEVICE=ljetplus -r300 -sPAPERSIZE=a4 -sOutputFile=- -

Como podemos ver, gs lee la STDIN desde el fichero de control que ha creado el servidor de impresión lpr; se ejecuta el filtro y la opción -sOutputFile=- envía la salida a STDOUT . El demonio lpd tomará los datos que se encuentren en STDOUT y los enviará a la cola de impresión.

Para procesar un fichero PDF aprovechando la utilidad pdf2ps (shell script que convierte un fichero PDF a PS), escribiremos el filtro:

     #!/bin/bash/
     #Filtro de ficheros pdf
     /usr/bin/pdf2ps | /usr/bin/gs -q -dSAFER -dNOPAUSE -sDEVICE=ljetplus -r300 -sPAPERSIZE=a4\
     -sOutputFile=- -

Para un texto en formato troff, emplearíamos este otro

     #!/bin/bash/
     #Filtro de ficheros troff
     /usr/bin/grops -g | /usr/bin/gs -q -dSAFER -dNOPAUSE -sDEVICE=ljetplus -r300 -sPAPERSIZE=a4\
     -sOutputFile=- -

(la opción -g para la orden grops permite generar documentos en formato letter o a4)

Como puede verse el concepto de filtro sería un shell script con los siguientes campos:

     #!/bin/bash
     #Comentario 'filtro para ficheros XYZ'
     /usr/bin/XYZps | /usr/bin/gs -q -dSAFER -dNOPAUSE -sDEVICE=ljetplus -r300 -sPAPERSIZE=a4\
     -sOutputFile=- -

Donde XYZps es un programa (con opciones) que convierte el formato XYZ a PS. Hay una gran cantidad de ellos que servirían para hacer filtros con posibilidad de imprimir gráficos; así el formato TIFF se pasa directamente con la utilidad tiff2ps, mientras que los GIF y JPEG se pasan a formato PNM mediante los programas giftopnm y djpeg, respectivamente. Una vez en este formato, se traduce a PS con la utilidad pnmtops.

5 Filtros mágicos

Un filtro puede ser tan sencillo como los que hemos visto, o complicarse substancialmente, llegando a ser capaz de reconocer el tipo de fichero que queremos imprimir y realizar las operaciones necesarias para que obtengamos una salida correcta. Un «filtro mágico» analiza la entrada que recibe y, de acuerdo con los datos que le llegan, manda el trabajo a otro filtro secundario. Así, cuando le llega un fichero en formato PS, lo envía a ghostcript, cuando es JPEG, lo manda a otro filtro adecuado para la impresión correcta, etc. Los filtros mágicos más conocidos son magicfilter, apsfilter y los filtros de impresión de RedHat.

5.1 Magicfilter

Magicfilter es un programa escrito por H. Peter Anvin Peter.Anvin@linux.org que puede encontrarse en cualquier espejo de sunsite, en el directorio

     /mirror/linux/sunsite/system/printing/magicfilter-1.2.tar.gz

y también existe como paquete .deb y .rpm. Es el filtro mágico recomendado en la distribución Debian. Para configurar una impresora en este sistema, primero han de instalarse los paquetes magicfilter y recode. El programa magicfilterconfig se crea al instalar el paquete magicfilter y permite una cómoda configuración de la impresora, escribiendo el fichero /etc/printcap a partir de las respuestas a una serie de preguntas que nos hace interactivamente. Nos pregunta por el puerto del dispositivo (/dev/lp1 o /dev/lp0), así como los nombres que daremos a nuestra impresora: uno largo y descriptivo y otro más corto que se usará como nombre para el directorio spool y luego muestra una serie de filtros disponibles para elegir. Lo mejor es mirar, antes de ejecutar magicfilterconfig, en el directorio /etc/magicfilter para ver cuál es el filtro que mejor viene a nuestra impresora. Los filtros son archivos de texto en cuyo cabecera se indica la impresora que lo puede utilizar. magicfilterconfig genera el fichero /etc/printcap con toda la información que le hemos dado. Para el caso de mi Epson Stylus Color 600, el fichero /etc/printcap generado por magicfilterconfig es (En Debian 2.1 kernel 2.0.36):

     #
     # Copyright (c) 1983 Regents of the University of California.
     # All rights reserved.
     #
     # Redistribution and use in source and binary forms are permitted
     # provided that this notice is preserved and that due credit is given
     # to the University of California at Berkeley. The name of the University
     # may not be used to endorse or promote products derived from this
     # software without specific prior written permission. This software
     # is provided ``as is'' without express or implied warranty.
     #
     #       @(#)etc.printcap        5.2 (Berkeley) 5/5/88
     #
     # This file was generated by /usr/sbin/magicfilterconfig.
     #
     lp|eps|ESC600:\
             :lp=/dev/lp1:sd=/var/spool/lpd/eps:\
             :sh:pw#80:pl#72:px#1440:mx#0:\
             :if=/etc/magicfilter/stylus_color_360dpi-filter:\
             :af=/var/log/lp-acct:lf=/var/log/lp-errs:

Una vez instalado, magicfilter permite que el sistema reconozca e imprima gráficos (GIF, JPEG, TIFF, BMP...), ficheros PS, PDF, DVI, páginas de manual, ficheros ASCII con acentos y ñ, e incluso cualquier tipo de fichero comprimido con gzip.

5. Filtros mágicos 7

5.2 Apsfilter

apsfilter es otro programa que permite configurar la impresora y escribir un fichero /etc/printcap con los filtros adecuados para muchos formatos de fichero (ASCII, DVI, PS, PDF, GIF, TIFF, BMP, BITMAP...) y diversos tipos de compresión (compress, gzip, freeze). apsfilter ha sido desarrollado por Andreas Klemm andreas@knobel.gun.de y es el paquete incluido en el YaST de SuSE para la configuración de la impresora, así como el que recomienda Pat Volkerding en su mensaje de bienvenida a Slackware. Puede obtenerse de

http://www.freebsd.org/andreas/

El programa apsfilter ofrece las siguientes colas de impresión para una computadora local:

• lp: Cola estándar para todos los formatos de fichero.

• lp-mono: Se genera para las impresoras de color cuando ha de imprimirse en blanco y negro. Procesa cualquier formato de fichero.

• ascii: Para imprimir ficheros de texto ASCII.

• raw: Para imprimir ficheros que ya tienen el formato específico de la impresora y por lo tanto no hay ningún tipo de conversión.

El fichero /etc/printcap correspondiente a mi Epson Stylus Color 600, obtenido con apsfilter, es el siguiente (En SuSE 6.2 kernel 2.2.10):

### BEGIN apsfilter: ### stcany.upp a4 color 360 ###
#   Warning: Configured for apsfilter, do not edit the labels!
#            apsfilter setup Thu Oct 14 01:30:42 CEST 1999
#
ascii|lp1|stcany.upp-a4-ascii-mono-360|stcany.upp a4 ascii mono 360:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/stcany.upp-a4-ascii-mono-360:\
:lf=/var/spool/lpd/stcany.upp-a4-ascii-mono-360/log:\
:af=/var/spool/lpd/stcany.upp-a4-ascii-mono-360/acct:\
:if=/var/lib/apsfilter/bin/stcany.upp-a4-ascii-mono-360:\
:la@:mx#0:\
:tr=:cl:sh:
#
lp|lp2|stcany.upp-a4-auto-color-360|stcany.upp a4 auto color 360:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/stcany.upp-a4-auto-color-360:\
:lf=/var/spool/lpd/stcany.upp-a4-auto-color-360/log:\
:af=/var/spool/lpd/stcany.upp-a4-auto-color-360/acct:\
:if=/var/lib/apsfilter/bin/stcany.upp-a4-auto-color-360:\
:la@:mx#0:\
:tr=:cl:sh:
#
lp-mono|lp3|stcany.upp-a4-auto-mono-360|stcany.upp a4 auto mono 360:\
:lp=/dev/lp0:\
:sd=/var/spool/lpd/stcany.upp-a4-auto-mono-360:\
:lf=/var/spool/lpd/stcany.upp-a4-auto-mono-360/log:\
:af=/var/spool/lpd/stcany.upp-a4-auto-mono-360/acct:\
:if=/var/lib/apsfilter/bin/stcany.upp-a4-auto-mono-360:\
:la@:mx#0:\

             :tr=:cl:sh:
     #
     raw|lp4|stcany.upp-a4-raw|stcany.upp a4 raw:\
             :lp=/dev/lp0:\
             :sd=/var/spool/lpd/stcany.upp-a4-raw:\
             :lf=/var/spool/lpd/stcany.upp-a4-raw/log:\
             :af=/var/spool/lpd/stcany.upp-a4-raw/acct:\
             :if=/var/lib/apsfilter/bin/stcany.upp-a4-raw:\
             :la@:mx#0:\
             :tr=:cl:sh:
     #
     ### END   apsfilter: ### stcany.upp a4 color 360 ###

Después de instalar el paquete apsfilter, la configuración de la impresora se lleva a cabo fácilmente ejecutando el script SETUP que encontraremos en el directorio /var/lib/apsfilter o /usr/lib/apsfilter. SETUP nos irá mostrando menús de opciones que seleccionaremos convenientemente, y al final nos escribirá el fichero /etc/printcap como arriba aparece. Existe un fichero de configuración de apsfilter llamado /etc/apsfilterrc que permite un mayor control del trabajo de los scripts de apsfilter en el shell. Por ejemplo, apsfilter imprime los ficheros ASCII del siguiente modo:

1. Convierte el fichero ASCII a PS mediante a2ps

2. El comportamiento de a2ps por defecto es imprimir el contenido de 2 páginas ASCII en una página apaisada

Esto no gusta a muchos usuarios que prefieren una salida «normal». Para cambiar esto editaremos el fichero /etc/apsfilterrc y observaremos que la variable FEATURE toma por defecto el valor 2n («To print two pages on one sheet without a header»). Debemos comentar (o borrar) esa línea y añadir esta otra:

     FEATURE=1n

como se observa en este fragmento de mi fichero

     ...
     ##############################################################################
     # Description
     # -----------
     # FEATURE=1       tell a2ps to print 1 page  on one sheet with    header
     # FEATURE=2       tell a2ps to print 2 pages on one sheet with    header
     # FEATURE=1n      tell a2ps to print 1 page  on one sheet without header
     # FEATURE=2n      tell a2ps to print 2 pages on one sheet without header
     # FEATURE=1l      tell a2ps to print 1 pages in landscape with    header
     # FEATURE=1ln     tell a2ps to print 1 pages in landscape without header
     #
     # This is the default I use now(the original default option was FEATURE=2n)
     FEATURE=1n
     ...

Para suprimir por completo la conversión de ASCII a PS, e imprimir directamente en el modo ASCII de la impresora, se debe quitar el símbolo de comentario (#) al comienzo de la orden USE_RECODE_NOT_AP2S=yes, y por supuesto haber instalado el programa recode.

5.3 Filtros de impresión Red Hat

Red Hat cuenta con su propio sistema de configuración de impresora (printtool) y su propio sistema de filtros de impresión (/usr/lib/rhs/rhs-printfilters), que incluye una herramienta de configuración visual y un administrador gráfico de trabajos de impresión. La configuración de una impresora mediante printtool es muy sencilla y puede hacerse sin muchos conocimientos sobre el sistema. El fichero /etc/printcap para mi Epson Stylus Color 600 obtenido con printtool es (En RedHat 6.0 kernel 2.2.7):

     #
     # Please don't edit this file directly unless you know what you are doing!
     # Be warned that the control-panel printtool requires a very strict format!
     # Look at the printcap(5) man page for more info.
     #
     # This file can be edited with the printtool in the control-panel.
     ##PRINTTOOL3## LOCAL uniprint NAxNA a4 {} U_EpsonStylusColor stcany 0
     lp:\
             :sd=/var/spool/lpd/lp:\
             :mx#0:\
             :sh:\
             :lp=/dev/lp0:\
             :if=/var/spool/lpd/lp/filter:

El filtro de RedHat se parece más al de magicfilter que al de apsfilter porque genera sólo una cola de impresión para una impresora única lp.

6 El controlador uniprint

A partir de la versión 5.0 de Ghostscript, ha aparecido un nuevo controlador paramétrico – the uniprint driver– desarrollado por Gunther Hess ghess@elmos.de, que se adapta a impresoras Canon BJC 610, HP Deskjet 550c, Prinwriter 2X y todas las Epson Stylus Color mediante un fichero de parámetros especificos. Por ejemplo, para la Epson Stylus Color 600 hay tres ficheros:

• stc600ih.upp: Para 1440x720dpi, inkjet paper

• stc600p.upp: Para 720x720dpi, plain paper

• stc600pl.upp: Para 360x360dpi, plain paper

Si no deseamos más que 360x360 dpi de resolución, puede usarse el fichero stcany.upp que sirve para cualquier impresora Stylus Color. Este fichero contiene las siguientes líneas:

     -supModel="Any Epson Stylus Color, 360x360DpI"
     -sDEVICE=uniprint
     -dNOPAUSE
     -dSAFER
     -dupColorModel=/DeviceCMYKgenerate
     -dupRendering=/ErrorDiffusion
     -dupOutputFormat=/EscP2
     -r360x360
     -dupMargins="{ 9.0 39.96 9.0 9.0}"
     -dupComponentBits="{1 1 1 1}"
     -dupBeginPageCommand="<

        1b40   1b40
        1b2847 0100 01
        1b2869 0100 01
        1b2855 0100 0A
        1b5500
        1b2843 0200 0000
        1b2863 0400 0000 0000
     >"
     -dupAdjustPageLengthCommand
     -dupAdjustTopMarginCommand
     -dupAdjustBottomMarginCommand
     -dupEndPageCommand="(\033@\014)"
     -dupAbortCommand="(\033@\15\12\12\12\12    Printout-Aborted\15\014)"

y por lo tanto, para realizar impresión de un fichero PS usando la orden gs, escribiríamos (para la Epson Stylus Color) en un filtro para ficheros PS la línea

     /usr/bin/gs @stcany.upp -sOutputFile=--

en lugar de

     /usr/bin/gs -sDEVICE=stcolor -r360 -q -dSAFER - dNOPAUSE -sOutputFile=- -

obteniendo el mismo resultado.

7 Impresión remota

En la impresión remota, los filtros se emplean de manera diferente según se trate de imprimir en una máquina remota unix o windows. En el primer caso, el administrador de la máquina remota debe incluir la nuestra en su /etc/hosts.equiv o, mejor, en /etc/hosts.lpd, o permitirle la impresión solamente a ciertos usuarios empleando el atributo rs (ver la página man de lpd). Para imprimir en la máquina remota, añadiremos una nueva entrada a nuestro /etc/printcap. Supongamos que la impresora de la máquina remota (hercules.us.es) es una Epson EPL 5700 y la cola de impresión por defecto (lp) es la que queremos usar. La entrada sería:

     #Remote unix printer
     epl5700|Remote unix printer
             :sd=/var/spool/lpd/epl5700:\
             :rm=hercules.us.es:\ #nombre de la máquina remota (rm: remote machine)
             :rp=lp:\ #nombre de la cola de impresión en la máquina remota (rp: remote printer)
             :mx#0:\
             :lp=/dev/null:\
             :sh:\

Es necesario tener un directorio spool en la máquina local, porque si la remota está ocupada o desconectada, el trabajo a imprimir esperará en dicho directorio hasta que sea enviado.

Cuando se trata de imprimir en una máquina remota Windows, debemos usar el paquete SaMBa. Es posible establecer una cola de impresión mediante el programa smbclient (parte de samba) por el protocolo TCP/IP mediante el servicio de impresión SMB. Samba incluye un guión para realizar esto, llamado smbprint. En pocas palabras, se añade una entrada nueva al /etc/printcap de la máquina local para la impresora remota incluyendo en la entrada if el script smbprint. Si la impresora remota es, por ejemplo, una HP Laserjet, podríamos poner:

     #Remote samba printer
     HPlaserjet|Remote samba printer
             :sd=/var/spool/lpd/HPlaserjet:\
             :mx#0:\
             :lp=/dev/null:\
             :if=/usr/local/sbin/smbprint #Ruta del guión smbprint
             :sh:\

Para mayor información acerca de la impresión remota, consultar el Cómo correspondiente a la configuración de impresión.

8 Créditos

David Espada García bombadil@santandersupernet.com escribió un interesante artículo «Configuración de la impresora» en el n^{o}4 de la revista Sólo Programadores LINUX. También me han sido muy útiles el «Ghostscript User Manual» de Thomas Merz tm@muc.de, el «Linux Printing Howto» de Grant Taylor gtaylor+pht@picante.com y el Manual de SuSE Linux 6.2, capítulo 12.

9 Anexo: El INSFLUG

El INSFLUG forma parte del grupo internacional Linux Documentation Project, encargándose de las traducciones al castellano de los Howtos, así como de la producción de documentos originales en aquellos casos en los que no existe análogo en inglés, centrándose, preferentemente, en documentos breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs. :) ), etc.

Diríjase a la sede del Insflug para más información al respecto.

En ella encontrará siempre las últimas versiones de las traducciones «oficiales»: www.insflug.org. Asegúrese de comprobar cuál es la última versión disponible en el Insflug antes de bajar un documento de un servidor réplica.

Además, cuenta con un sistema interactivo de gestión de fe de erratas y sugerencias en línea, motor de búsqueda específico, y más servicios en los que estamos trabajando incesantemente.

Se proporciona también una lista de los servidores réplica (mirror) del Insflug más cercanos a Vd., e información relativa a otros recursos en castellano.

En http://www.insflug.org/insflug/creditos.php3 cuenta con una detallada relación de las personas

que hacen posible tanto esto como las traducciones.

¡Diríjase a http://www.insflug.org/colaboracion/index.php3 si desea unirse a nosotros!.
«Cartel» Insflug, cartel@insflug.org.