martes, 11 de septiembre de 2012

Cómo imprimir un pdf en formato libro

Para las clases de inglés en la oficina, generalmente tenemos que imprimir algunos apuntes o ejercicios que nos manda la profesora, y en ocasiones son varias páginas.

Como tenemos impresoras que imprimen doble faz, empece usando esta opción para reducir a la mitad la cantidad de hojas usadas. Luego empece a usar la opción de imprimir dos páginas por hoja, reduciendo de nuevo a la mitad la cantidad de hojas: Si me pasan un apunte de 8 páginas, sólo uso 2 hojas. Nada mal, considerando que después de usarlas en una o dos clases las voy a tirar a la basura (o reciclar).

Una cosa molesta de tener dos páginas por hoja, doble faz, es la incomodidad de tener que dar vuelta la hoja completa cada dos páginas, a veces tenes que andar buscando cual es la que sigue si se te mezclaron.

Entonces empecé a buscar como hacer para imprimir un pdf en formato libro: imprimir en la primer hoja las paginas 8 y 1, en la parte de atrás las 2 y 7, en la hoja 2 las páginas 6 y 3, y luego las 4 y 5. Entonces, apilando las hojas y doblándolas por el medio, te queda un librito con las páginas bien ordenadas.

Bueno, basta de chachara, ya estaba todo hecho. En Debian/Ubuntu, es solo cuestión de tener instalados dos paquetes: ghostscript y psutils. Para asegurarte que los tenés, hace un:

$ sudo apt-get install ghostscript psutils

Luego, la cosa es simple: hay que pasar el pdf a ps, y una vez que tenemos el ps lo pasamos por el programa psbook (que viene en el paquete psutils). Este programa se encarga de reordenar las hojas para imprimir en formato libro:

$ pdf2ps Documento.pdf temp.ps
$ psbook temp.ps Documento-libro.ps

Esto también se puede hacer en un solo paso, evitando generar el archivo temporal:

$ pdf2ps Docuemnto.pdf - | psbook > Documento-libro.ps

O incluso podrías volver a generar un pdf usando ps2pdf:

pdf2ps Docuemnto.pdf - | psbook | ps2pdf - Documento-libro.pdf

Luego lo imprimís con la aplicación que usemos siempre (evince en mi caso).

De yapa, un script que recibe el nombre archivo pdf a procesar (y opcionalmente el nombre del archivo de salida), y hace todo por nosotros:

----------------------------------------

#!/bin/bash

if [ -z $1 ]
then
    echo "Uso: $0 origen [destino]"
    exit 1
else
    SRC=$1
fi

if [ -z $2 ]
then
    DST=`echo "$1" | sed -e 's/.pdf$/-book.pdf/'`
else
    DST=$2
fi

pdf2ps $SRC - | psbook | ps2pdf - $DST
echo "PDF en formato libro: $DST"
----------------------------------------