Extraire un intervalle de page d'un pdf - retour accueil
git clone git://bebou.netlib.re/pdfextract
Log | Files | Refs | README |
pdfextract.sh (1336B)
1 #! /bin/sh 2 3 usage() { 4 <<-\. cat 5 Extrait d'un pdf la nième page à la mième 6 7 Utilisation : [pdfextract] [-s start] [-e end] [-f fichier_source] [-o fichier_de_sortie] 8 9 Si le fichier source est `-` ou manquant, le pdf sera lu depuis stdin. 10 Si le fichier de sortie est `-` ou manquant, le résultat sera 11 imprimée sur stdout 12 Si la première page est renseignée mais pas la dernière alors l'intervalle sera 13 [s;dernière-page]. 14 Si la dernière page est renseignée mais pas la première alors l'intervalle sera 15 [1;e] 16 17 < dossier.pdf pdfextract -s 3 -f - -o extrait.pdf 18 pdfextract -s 7 -e 10 -f dossier.pdf -o extrait.pdf 19 . 20 } 21 22 while getopts "s:e:f:o:h" opt;do 23 case "$opt" in 24 (h) usage;exit 0;; 25 (*) eval "$opt='$OPTARG'" ;; 26 esac 27 done 28 29 _die() { msg="$1";echo "$msg" >&2;exit 1; } 30 31 nbpages() { 32 sourcefile="$1" 33 pdfinfo "$sourcefile" | grep "^Pages:" | awk '{print $2}' 34 } 35 36 tmpdir=$(mktemp -d) 37 trap "rm -rf $tmpdir" EXIT QUIT TERM 38 39 [ "$f" = "-" ] || [ -z "$f" ] && { cat > "$tmpdir/in"; f="$tmpdir/in"; } 40 [ -n "$s" ] && [ -z "$e" ] && e="$(nbpages "$f")" 41 [ -z "$s" ] && [ -z "$e" ] && _die "Manque les pages" 42 43 pdfseparate -f "${s:-0}" -l "$e" "$f" $tmpdir/%d.pdf.tmp 44 pdfs=$(find $tmpdir -name '*.pdf.tmp' | sort -t'/' -nk4) 45 pdfunite $pdfs $tmpdir/out 46 [ "$o" = "-" ] || [ -z "$o" ] && cat $tmpdir/out || cp $tmpdir/out "$o" 47