pdfextract

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