You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#!/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"
|
|
|
|
outputImpaginato="${basename%.pdf}-Impaginato.pdf"
|
|
|
|
empty="/tmp/empty.pdf"
|
|
|
|
echo "$input $basename $inputMul4 $outputImpaginato" > ~/log
|
|
|
|
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 "$outputImpaginato"
|
|
|
|
|
|
|
|
rm "$empty" "$inputMul4"
|
|
|
|
}
|
|
|
|
|
|
|
|
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
|