Posts Tagged ‘pdftk’

Imprimir PDF: dos páginas por hoja y doble faz

Wednesday, December 3rd, 2008

Recurrente problema que he tenido hace tiempo; además de ser una manera excelente de economizar en impresiones de libros digitales.

Simplemente he codificado un pequeño script que divide el documento en cuestión en dos archivos: primeras.pdf y segundas.pdf. Cada archivo contiene las hojas divididas, teniendo en cuenta que se van a imprimir dos hojas por cara, para primero imprimir todas las hojas correspondientes a las caras superiores y el otro el de las inferiores.

Por ejemplo: tenemos un documento llamado libro.pdf el cual tiene 16 hojas. Al utilizar el script obtendremos dos archivos, los cuales contendrán las hojas:

  • primeras.pdf; contiene hojas de las caras superiores: 1, 2, 5, 6, 9, 10, 13, 14.
  • segundas.pdf; contiene hojas de las caras inferiores: 3, 4, 7, 8, 11, 12, 15, 16.

Script


#!/bin/bash
total=#Coloque la cantidad de hojas del documento
eval pdftk A=$1 cat `i=1;while [ $i -lt $((total)) ];
do echo A$i A$(($i+1));
let i=$(($i + 4));
done` output primeras.pdf
eval pdftk A=$1 cat `i=3;while [ $i -lt $((total)) ];
do echo A$i A$(($i+1));
let i=$(($i + 4));
done` output segundas.pdf

Uso

  1. Hay que editar el script (como se indica más abajo).
  2. Colocar el documento en la misma carpeta que el script.
  3. Abrir una terminal y teclear:
    
    $ ./script.sh foo.pdf
    
  4. Genera dos archivos. Primero imprimir: primeras.pdf, luego segundas.pdf.

Consideraciones

  • Para que el script funcione se debe tener instalado pdftk; un pequeño software que manipula documentos PDF (en cualquier distribución Debian: aptitude install pdftk).
  • Lamento no ser un experto en bash; el script no es perfecto. Antes de utilizarlo hay que indicarle la cantidad de hojas del documento, editando el script, asignando el valor a la variable: total. He intentado automatizar esto pero no he podido lograrlo. Si alguien lograse hacerlo agradecería que compartiese la solución. (dejo una pequeña ayuda para obtener la cantidad de hojas del documento PDF: eval pdftk $documento dump_data | grep “NumberOfPages:” | awk ‘{print $2}’).