Preguntas inocentes

Sucedió el pasado Domingo 24 de Julio. Mi mujer se había descargado de Internet unos documentos en formato PDF que quería imprimir. Mala suerte, porque el autor de los PDF los había protegido para que no se pudieran imprimir, de forma que tuvieras que leerlos en la pantalla del ordenador. Yo estoy acostumbrado a mirar la pantalla durante horas, por lo que no entiendo que a alguien le cueste. Pero les cuesta. Además, a mi me gusta leer los libros de informática con forma de libro.

Es entonces cuando surgió la pregunta inocente: «Diego, ¿estos PDF no se pueden imprimir de alguna manera?». Yo aún no sabía cuánto dolor estaba encerrado en esas diez palabras.

«Bueno, puedo intentarlo» – le contesté.

Sencillo, a fin de cuentas, para un freaky de la informática como yo. Bastaba con copiar uno de los PDF a la carpeta compartida pública de mi servidor Linux (mi mujer usa Windows XP). Para ser totalmente ordenado, dentro de /public creé una carpeta Paqui. Una vez situado, desde una terminal tecleé:

$ cd /public/Paqui $ pdf2ps nombre-fichero.pdf

¡Exito! El fichero se había convertido de PDF a PS (PostScript) y ahora sí que se podía imprimir usando el visor de PostScript de GNOME gvv (Gnome Ghostview). Ahora mismo alguien de la audiencia estará pensando «bueno, sí, eres muy listo, pero eso es precisamente lo que el autor del PDF quería impedir». Pues sí, me confieso. Los casados entre la audiencia me entenderán.

Un momento de triunfo

Exultante por mi triunfo (conseguido en apenas cinco minutos) me dirigí a la mesa de mi mujer con los papeles prueba de mi triunfo en la mano. «Listo» – le dije con una gran sonrisa.

«Gracias, está muy bien, pero… ¿y cuándo tú no estés?. ¿No hay alguna manera de automatizar el proceso para que lo pueda hacer yo sola?»

El mundo pareció enmudecer. Me sentía cada vez más pequeño. Ese es el tipo de preguntas inocentes que suelen hacer los usuarios y que normalmente suelen llevar aparejados un tremendo marrón.

Volví cabizbajo a mi servidor Linux y pensé. «Bueno, probablemente con un pdf2ps *.pdf esté todo solucionado. Me equivocaba. pdf2ps no admite comodines. Luego para procesar varios ficheros hay que hacerse un pequeño script.

«Ese peaso de script»

Bueno, nada más fácil que un pequeño script. En cinco minuto (más) tuve escrito algo como ésto:

#!/bin/bash
 PROGRAM=pdf2ps
for f in $1
do
echo $PROGRAM $f $f.ps
$PROGRAM $f $f.ps
done
nautilus /public/Paqui

El lector avezado en programación de la BASH Linux sabrá que el bucle for recorre todos los ficheros que coincidan con un patrón, pasado como parámetro en $1. Luego este script se usa así:

$ multiple-pdf2ps.sh *.pdf

generando un fichero pdf.ps por cada pdf.

¡Bueno, segundo momento de triunfo! Ya estaba todo listo. O casi. Subí el nuevo script a la rama correspondiente del CVS y me puse a pensar.

Mi reino por un visor de PostScript para Xp

Pues eso. La conversión había tenido éxito. Pero no quería que mi mujer tuviera que lidiar con CUPS y la impresión desde Linux (entre otras cosas porque aún no he configurado el driver de impresión para sacar dos páginas por hoja, pero ese es otro tema). Luego necesitaba un visor de PostScript para XP.

Sencillo: Google me llevó a http://www.cs.wisc.edu/~ghost/ de donde me descargué el visor Ghostview para Windows y el propio GhostScript (un intérprete de PostScript Software Libre; PostScript es de Adobe y los visores de PostScript valen pasta o en cualquier caso no son Software Libre). Dejé los ficheros en /public/Paqui y desde el XP instalé ambos ficheros (por cierto, la conexión por red a \einstein\public la había automatizado con una unidad de red, F: concretamente: otra tarea de «un minuto»).

La prueba fue un éxito absoluto: podía imprimir dos páginas por hoja abriendo el .PS desde XP. ¡Triunfo! ¿Ya? No, falta algo…

Un usuario en Linux

Claro. Si quiero que mi mujer pueda hacer ésto cuando yo no esté, debe poder entrar en el servidor. Bueno, sencillo, adduser Paqui, le pongo una clave, entro en su sesión de GNOME, le pongo un escritorio bonito, le creo un lanzador en el escritorio que ponga «convertir los PDFs» y que llame al script y listo. Otros cinco minutos.

Probemos. ¡Cómo!?. No puedo acceder a los ficheros de /public/Paqui. Horror. Al montar la unidad en Linux, tengo una línea en el /etc/fstab como:

/dev/hdc1 /mnt/hdc1-xp vfat auto,user,exec,uid=1000,gid=1000 0 0

que, entre otras cosas, monta la unidad /dev/hdc1 con el usuario de uid 1000 como propietario, o sea, yo. Por eso el usuario de mi mujer no puede leer /public

Solución: meter a los dos usuarios en el grupo users (de GID 100) y en el fstab poner:

/dev/hdc1 /mnt/hdc1-xp vfat auto,user,exec,gid=100,umask=002 0 0

de ésta forma, el propietario de la carpeta es ahora el grupo 100 (al que pertenecen los dos usuarios de Linux) y la umask permite unos permisos de lectura y escritura para el grupo. Todo solucionado.

Epílogo

Hay que ver lo que puede originar una preguntita inocente. Son los «poyaques». Es decir «po ya que puedo convertir de pdf a ps, vamos a convertir en masa», «po ya que he convertido en masa, que se haga con otro usuario», «po ya que …».

Muchas veces los «poyaques» ocupan más tiempo en los proyectos que las especificaciones originales. Ojo con los «poyaques» y las preguntas inocentes. Antes de decir «sí, si eso son sólo cinco minutos» piensa no vaya a ser que sean cinco tras otros cinco tras otros cinco….