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

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}’).

Tags: , ,

One Response to “Imprimir PDF: dos páginas por hoja y doble faz”

  1. seba Says:
    Gravatar

    Hola,

    es cierto, ya gaste muchas hojas en los estupidos programas que no saben imprimir! Y te imprimen la 1 y la 3 en la misma hoja.

    Ahora te hago una pregunta, si das la ayuda que dices para sacar la cantidad de hojas totales, ¿por qué no agregas eso al script?

    total = `eval pdftk $documento dump_data | grep “NumberOfPages:” | awk ‘{print $2}’)`

    saludos y gracias! (todavia no lo probé, tengo que recompilar gcc con la use flag gcj)

Leave a Reply