#!/bin/sh usage() { _name="$(basename "$0")" cat << EOF Utilizzo: ${_name} [nomePDF] Esempi: ${_name} MeccanicaRazionale.pdf Per bug contattare f.minnocci@studenti.unipi.it I ringraziamenti per l'idea originale vanno a http://poisson.phc.dm.unipi.it/~dilillo EOF exit $1 } main() { # Initialize variables input="$(realpath "$1")" basename="$(basename "$1")" inputMul4="/tmp/${basename%.pdf}-Mul4.pdf" outputTemporaneo="${basename%.pdf}-Temporaneo.pdf" outputImpaginato="${basename%.pdf}-Impaginato.pdf" empty="/tmp/empty.pdf" n="$(pdftk "$input" dump_data | grep NumberOfPages | cut -d' ' -f2)" # Add empty pages echo .bp | groff -T pdf > "$empty" pdftk F="$input" E="$empty" cat F1-$n $(for x in $(seq 1 $((4-n%4))); do printf 'E1 '; done) output "$inputMul4" # Generate alternating page ranges n=$((n+(4-n%4))) range= k=1 while [ "$k" -lt $((n/2)) ]; do range="$range$k $((n/2+k)) $((n/2+k+1)) $((k+1)) " k=$((k+2)) done # Output final pdf pdftk "$inputMul4" cat $range output "$outputTemporaneo" && pdfjam --landscape --nup 2x1 "$outputTemporaneo" --outfile "$outputImpaginato" rm -f "$empty" "$inputMul4" "$outputTemporaneo" } if [ -z "$1" ] ; then printf "Non hai specificato nessun file...\n\n" && usage 1 else case "$1" in -h|--help) usage 0 ;; -*) error "Opzione invalida: $1" ;; *) main "$@" ;; esac fi