1
0
Fork 0

fix de la commande sed et améliorations mineures

This commit is contained in:
mregg-9182 2022-05-24 12:38:02 +02:00
parent 9c6d2db6fb
commit e4c482e33a
1 changed files with 16 additions and 8 deletions

View File

@ -5,7 +5,7 @@ trap unexpected_error SIGINT SIGTERM ERR
usage() {
cat <<EOF
Usage: ./$(basename "${BASH_SOURCE[0]}") [-h] [-v] [-n] [-r <valeur_DPI>] <fichier_PDF1> [<fichier_PDF2>...]
Usage: ./$(basename "${BASH_SOURCE[0]}") [-h] [-d] [-n] [-r <valeur_DPI>] <fichier_PDF1> [<fichier_PDF2>...]
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
# - 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é