From e4c482e33a8478d5b7b0b8bbbe7035300179fde7 Mon Sep 17 00:00:00 2001 From: mregg-9182 Date: Tue, 24 May 2022 12:38:02 +0200 Subject: [PATCH] =?UTF-8?q?fix=20de=20la=20commande=20sed=20et=20am=C3=A9l?= =?UTF-8?q?iorations=20mineures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- waterwark_remover.sh | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/waterwark_remover.sh b/waterwark_remover.sh index 4f038d6..0cf780c 100644 --- a/waterwark_remover.sh +++ b/waterwark_remover.sh @@ -5,7 +5,7 @@ trap unexpected_error SIGINT SIGTERM ERR usage() { cat <] [...] +Usage: ./$(basename "${BASH_SOURCE[0]}") [-h] [-d] [-n] [-r ] [...] Ce script supprime les watermarks contenus dans certains fichiers PDF. @@ -15,7 +15,7 @@ Options disponibles: -d, --debug Active le mode debug (un fichier log est alors créé dans /tmp) -n, --no-color Désactive la coloration des messages dans le terminal -r, --resolution Résolution en DPI du nouveau document PDF (par défaut: 300 DPI) - Seulement ces valeurs en sont supportées : '72', '150' ou '300' + Seules ces valeurs sont supportées : '72', '150' ou '300' Exemple : ./$(basename "${BASH_SOURCE[0]}") -r 150 file.pdf EOF exit @@ -25,9 +25,9 @@ unexpected_error() { trap - SIGINT SIGTERM ERR if [[ -z ${NOFORMAT+x} ]]; then - msg "[Fatal] Une erreur inattendue s'est produite." + msg "[Critique] Une erreur inattendue s'est produite." else - msg "${PURPLE}[Fatal] Une erreur inattendue s'est produite.${NOFORMAT}" + msg "${PURPLE}[Critique] Une erreur inattendue s'est produite.${NOFORMAT}" fi [[ -z ${tmp_dir+x} ]] || cleanup # si la variable 'tmp_dir' n'est pas déclarée, ça n'exécute pas le nettoyage @@ -38,6 +38,12 @@ unexpected_error() { cleanup() { msg "Nettoyage des fichiers temporaires..." + if [[ -z $tmp_dir ]] && [[ -z ${NOFORMAT+x} ]]; then + die "[Critique] La variable 'tmp_dir' est vide pour une raison anormale." + elif [[ -z $tmp_dir ]]; then + die "${PURPLE}[Critique] La variable 'tmp_dir' est vide pour une raison anormale.${NOFORMAT}" + fi + rm -f $tmp_dir/* rmdir $tmp_dir @@ -82,7 +88,7 @@ parse_params() { resolution="${2-}" shift ;; - -?*) die "Option inconnue: $1" ;; + -?*) die "Option inconnue : $1" ;; *) break ;; esac shift @@ -128,7 +134,7 @@ for ifile in "${input_files[@]}"; do elif ! echo "$ifile" | grep -qi '\.pdf$'; then msg "${RED}Erreur : Le nom du fichier '$ifile' ne termine pas par la bonne extension ('.pdf' ou '.PDF').${NOFORMAT}" is_arg_invalid=true - fi + fi done $is_arg_invalid && die "${RED}Au moins un argument est invalide (voir erreur ci-haut).${NOFORMAT}" @@ -159,7 +165,7 @@ for ifile in "${input_files[@]}"; do msg "Suppression du watermark..." # source de cette commande `sed` : https://stackoverflow.com/a/37681075 - sed -i '/{^1 0 0 1 5 5 Tm$/{:a;N;/^ET$}/!ba};/^\(.*\)Tj$/d' "${tmpfiles_prefix}_2.pdf" &>>$log_file + sed -ri '/^\(.+\\n.+\\r.+\)Tj$/d' "${tmpfiles_prefix}_2.pdf" &>>$log_file msg "Recompression du document PDF..." pdftk "${tmpfiles_prefix}_2.pdf" output "${inputfile_wo_ext}_sansWatermark.pdf" compress verbose &>>$log_file @@ -178,4 +184,6 @@ for ofile in "${output_files[@]}"; do done # À faire : -# - option pour changer l'emplacement du fichier tmp et du fichier output \ No newline at end of file +# - option pour changer l'emplacement du fichier tmp et du fichier output +# - vérifier si fonction unexpected_error est écrite correctement avec le exit 1 à la fin et pas un die +# - vérifier si utilisation de ${VAR+x} est bien justifié