pdfextract

Extraire un intervalle de page d'un pdf - retour accueil

git clone git://bebou.netlib.re/pdfextract
Log | Files | Refs | README |

commit 83a563f9a267b7ecd407a64b4609db4ca1665543
parent 025284f4b32167eefd62f1821a827072994f7efc
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Tue, 26 Nov 2024 09:55:40 +0100

Peut lire dans stdin, peut imprimer dans stdout

Diffstat:
Mpdfextract.sh | 38+++++++++++++++++++++++---------------
1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/pdfextract.sh b/pdfextract.sh @@ -1,22 +1,28 @@ #! /bin/sh +usage() { + <<-. cat + Extrait d'un pdf la nième page à la mième + + Utilisation : [pdfextract] [-s start] [-e end] -f fichier_source [-o fichier_de_sortie] + + Si le fichier source est `-`, le pdf sera lu depuis stdin. + Si le fichier de sortie est `-` ou manquant, le résultat sera + imprimée sur stdout + + < dossier.pdf pdfextract -s 3 -f - -o extrait.pdf + pdfextract -s 7 -e 10 -f dossier.pdf -o extrait.pdf + . +} + while getopts "s:e:f:o:h" opt;do case "$opt" in - (h) - <<-. cat - Utilisation : [pdfextract] [-s start] [-e end] -f fichier_source [-o fichier_de_sortie] - - azdazd - zadazd - azd - . - exit 0 - ;; + (h) usage;exit 0;; (*) eval "$opt='$OPTARG'" ;; esac done -die() { +_die() { msg="$1" echo "$msg" exit 1 @@ -28,13 +34,15 @@ nbpages() { } [ -n "$s" -a -z "$e" ] && e="$(nbpages $f)" -[ -z "$s" -a -z "$e" ] && die "Manque les pages" -[ -z "$f" ] && die "Manque le fichier source" +[ -z "$s" -a -z "$e" ] && _die "Manque les pages" +[ -z "$f" ] && _die "Manque le fichier source" tmpdir=$(mktemp -d) -trap "rm $tmpdir/*.pdf.tmp" EXIT QUIT +trap "rm -rf $tmpdir" EXIT QUIT TERM +[ "$f" = "-" ] && { cat > $tmpdir/in; f=$tmpdir/in; } pdfseparate -f "${s:-0}" -l "$e" "$f" $tmpdir/%d.pdf.tmp pdfs=$(find $tmpdir -name '*.pdf.tmp' | sort -t'/' -nk4) -pdfunite $pdfs ${o:-extracted-out.pdf} +pdfunite $pdfs $tmpdir/out +[ "$o" = "-" ] || [ -z "$o" ] && cat $tmpdir/out || cp $tmpdir/out "$o"