#!/bin/sh # PsToBroch shell script. Par Félix Hauri oct 2000. # Ce script utilise la commande 'pstops' du package 'psutils'. # Découper un A4 en deux fichiers (1 recto, 1 verso) # avec un comptage inversé des pages pour création de brochures A5. # Syntaxe: # $0 file.ps # --> Création de 'file_4a.ps' et 'file_4b.ps' # dans le répertoire courrant: # $ cd /tmp;pstobroch.sh ~/fichier.ps # va créer /tmp/fichier_4[ab].ps # Sur ma jet d'encre, il me suffit d'imprimer le paquet 'a' puis le retourner, # pour imprimer le paquet 'B', planter deux agraffes et plier. les pages # s'organisent systématiquement juste. # En cas d'inversion (dépendant de l'imprimante), il conviendra d'inverser # l'ordre des pages, voir des paquets... # Sur une imprimante recto-verso, il faudra ne faire qu'un fichier, en incluant # au début du fichier (entre begin et end prolog, ou avant le fichier), # la séquence d'initialisation 'recto-verso', qui est mentionné dans le # fichier de description de l'imprimante (PPD File). pages=$( pstops '1:0' "$1" 2>&1 >/dev/null|\ awk '/Wrote/ { n=0 while ($n != "Wrote") {n++} n++ print $n }' ) if [ $pages -lt 4 ] ; then echo "Fonction inutile avec moins de 4 pages" exit 0 fi ofile=${1##*/} orep=${1%/*} [ "$orep" = "$1" ] && orep="." ofile=${ofile%.*} # Le rapport A5/A4, c'est 1/sqrt(2). gauche="L@.7071(21.02cm,0cm)" droite="L@.7071(21.02cm,14.87cm)" fpages=$(($pages/4)) [ $(($fpages*4)) -lt $pages ] && fpages=$(($fpages+1)) echo "$orep/$ofile ($pages) -> ${ofile}_4.ps: $fpages pages" string="$(($fpages*4)):" lpos=$(($fpages*4-1)) maxr=$(($lpos/2+1)) rpos=0 while [ $rpos -lt $maxr ] ;do string="$string$lpos$gauche+$rpos$droite," lpos=$(($lpos-2)) rpos=$(($rpos+2)) done string="${string%,}" pstops "$string" $1 >${ofile}_4a.ps string="$(($fpages*4)):" lpos=1 rpos=$(($fpages*4-2)) while [ $lpos -lt $maxr ] ;do string="$string$lpos$gauche+$rpos$droite," lpos=$(($lpos+2)) rpos=$(($rpos-2)) done string="${string%,}" pstops "$string" $1 >${ofile}_4b.ps