Foliado de archivos .pdf

En mi quehacer actual me es necesario foliar documentos gruesos, de más de 600 páginas, lo hice una par de veces y evidentemente no es algo que quiero hacer otra vez, entonces busqué ayuda de la Comunidad para tratar de solucionar este inconveniente.

Me respondieron, así que comparto lo aprendido en esta entrada:

La prueba se realizó en un Sistema Operativo Trisquel GNU/Linux Toutatis 6.0 de 32-bit con Núcleo Linux 3.8.10-gnu-1-generic.

Proceso

Tenemos que instalar las dependencias necesarias para la tarea,
veamos:

# apt-get install enscript
# apt-get install pdftk
# apt-get install ps2pdf
# apt-get install ghostscript

El visor de pdf no es un requisito pero será necesario para el proceso.

# apt-get install evince

Ahora hay que crear el script que ejecutaremos para foliar nuestros archivos .pdf.

Con cualquier editor de texto (como por ejemplo emacs, nano, vim, gedit) o incluso desde el mismo shell podemos crear el script que tendrá una extensión .sh. El nombre del script para el presente ejemplo es foliador.sh, el contenido es este:

#!/bin/bash input="$1"
output="${1%.pdf}-foliado.pdf"
pagenum=$(pdftk "$input" dump_data | grep "NumberOfPages" | cut -d":" -f2)
enscript -L1 --header='||Foliado No $% de $=' --output - < <(for i in $(seq "$pagenum"); do echo; done) | ps2pdf - | pdftk "$input" multistamp - output $output

No es momento oportuno para tratar de entender cada subproceso, pero lo que se puede notar es que output="${1%.pdf}-foliado.pdf" indica que el nombre del archivo pdf que se procesa cambiará a archivo-foliado.pdf, además el texto Foliado No $% de $= es lo que se imprime efectivamente en la parte superior derecha de nuestro archivo pdf. Así que podemos cambiar ese código a nuestro gusto. Yo por ejemplo lo uso así, ya que no me intersa el total de páginas en cada página:

#!/bin/bash input="$1"
output="${1%.pdf}-foliado.pdf"
pagenum=$(pdftk "$input" dump_data | grep "NumberOfPages" | cut -d":" -f2)
enscript -L1 --header='||Foliado No $%=' --output - < <(for i in $(seq "$pagenum"); do echo; done) | ps2pdf - | pdftk "$input" multistamp - output $output

En un sistema GNU hay que otorgar permisos pertinentes a los script, eso lo hacemos así:

# chmod 777 foliador.sh

Ahora hay que notar que si se ejecuta el script este empieza a foliar desde adelante: 1, 2, 3 … Pero en mi caso particular necesito que el foliado inicie desde la última página, para lograr esto uso Evince el cual me permite imprimir a un archivo con el orden invertido de páginas (Si no lo necesitan no sigan este paso). Terminado ese proceso ya podemos foliar.

Debemos ejecutar el script correctamente, hay que colocar el script foliador en la misma carpeta en donde se ubica nuestro archivo .pdf a foliar, luego ejecutamos el script así:

$ ./foliador.sh archivo.pdf

La salida será:

archivo-foliado.pdf

Finalmente (al menos en mi caso) se vuelve a imprimir a un archivo con Evince para que las hojas tengan el orden inicial.

Otra forma

Resulta evidente que si solo queremos tener en un documento impreso foliado, será suficiente crear una numeración automática en una suite de ofimática como LibreOffice e imprimir encima de las hojas que se requiera.

Espero que le sirva a alguien y le agradezco especialmente a Ark74.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s