#1 Le 31/05/2012, à 10:12
- xheryx
[Script/bash] Reduction d'un fichier pdf par script
Bonjour à tous
Le but c'est de partager ce script que j'ai découvert et qui peu etre utile à pas mal de monde .
Reduire au amximum un fichier pdf en un seul clique c à d passé de quelque Mo à quelque Ko ca aide non? surtout quand on veut l'attaché à un message.
IL suffit de l'enregistrer avec gedit le rendre éxecutable et c'est parti .
#!/bin/bash
cheminConfig=$HOME/.pdfmm.conf
if [ ! -e "$cheminConfig" ]; then
echo "dossier=" > "$cheminConfig"
fi
if [ -z $(which zenity) ] || [ -z $(which gs) ]; then
echo "zenity et ghostscript doivent être installés."
exit 1
fi
if [ ! -z "$1" ]; then
pdfAreduire="$1"
else
dossier=$(cat "$cheminConfig" | grep "^dossier=" | cut -f2- -d"=")
if [ -z "$dossier" ]; then
dossier=$HOME
fi
pdfAreduire=$(zenity --file-selection --filename="$dossier/" --title="Sélectionnez un fichier PDF dont la taille doit être réduite")
if [ $? -ne 0 ]; then
zenity --error --text="Aucun fichier PDF sélectionné."
exit 1
fi
fi
if [ ! -f "$pdfAreduire" ]; then
zenity --error --text="Le fichier précisé n'existe pas ou n'est pas utilisable:\n$pdfAreduire"
exit 1
fi
# Mise à jour de la configuration.
dossier=$(dirname "$pdfAreduire")
sed -i "s|^\(dossier=\).*$|\1$dossier|" "$cheminConfig"
ext="${pdfAreduire##*.}" # Si elle existe, l'extension est récupérée pour conserver sa casse («pdf» ou «PDF»).
if [ "$ext" != "$pdfAreduire" ]; then
pdfReduit=$(echo "$pdfAreduire" | sed "s/\.$ext$/--.$ext/")
else
pdfReduit="$pdfAreduire--"
fi
if [ -f "$pdfReduit" ]; then
zenity --question --text="Le fichier optimisé suivant existe déjà:\n$pdfReduit\n\nVoulez-vous vraiment écraser ce fichier?"
if [ $? -eq 1 ]; then
zenity --info --text="Arrêt du script."
exit 0
fi
fi
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="$pdfReduit" "$pdfAreduire" | zenity --notification --listen --window-icon="info" --text="Réduction de la taille du fichier suivant en cours: $pdfAreduire"
if [ ${PIPESTATUS[0]} -ne 0 ]; then
zenity --error --text="Erreur lors de la réduction de la taille du fichier suivant:\n$pdfAreduire"
if [ -f "$pdfReduit" ]; then
rm "$pdfReduit"
fi
exit 1
fi
tailleDepart=$(stat --format=%s "$pdfAreduire")
tailleDepartFormatee=$(ls -hl "$pdfAreduire" | cut -d ' ' -f 5)
tailleSortie=$(stat --format=%s "$pdfReduit")
tailleSortieFormatee=$(ls -hl "$pdfReduit" | cut -d ' ' -f 5)
pourcentageOptimisation=$(echo "(($tailleDepart - $tailleSortie) / $tailleDepart) * 100" | bc -l | cut -d '.' -f 1)
if [ -z $pourcentageOptimisation ] || [ $pourcentageOptimisation == "-" ]; then
pourcentageOptimisation=0
fi
zenity --info --text="Réduction de la taille du fichier suivant terminée:\n$pdfAreduire\n\nLe nouveau fichier optimisé est:\n$pdfReduit\n\nStatistiques:\n- taille de départ: $tailleDepartFormatee\n- taille de sortie: $tailleSortieFormatee\n- pourcentage d'optimisation: $pourcentageOptimisation%"
exit 0
J'en profite aussi s'il ya une ame charitable pour montrer comment on fait( quel ligne chagé) pour selectionner plusieurs fichier( par exemple en appuyant sur Ctrl en meme temps) dans zenity au lieu d'un seul fichier à chaque fois .
Quand on a 1000 fichiers pdf à reduire c'est pas la joie.
Merci de votre aide
edit modo : titre
Dernière modification par nesthib (Le 31/05/2012, à 14:53)
Hors ligne
#2 Le 31/05/2012, à 10:28
- kookie68
Re : [Script/bash] Reduction d'un fichier pdf par script
Bonjour
En matière de réduction de fichiers pdf, il y a ça aussi. Je l'utilise régulièrement et il est diablement efficace
Lien vers le site de pdfmm
Hors ligne
#3 Le 31/05/2012, à 14:09
- xheryx
Re : [Script/bash] Reduction d'un fichier pdf par script
Bonjour
En matière de réduction de fichiers pdf, il y a ça aussi. Je l'utilise régulièrement et il est diablement efficace
Lien vers le site de pdfmm
Merci pour le partage mais à mon avis c'est diablement la meme chose ,celui que j'ai mis à été écrit par la meme personne.Mr Jean Phillipe FLEURY
Dernière modification par xheryx (Le 31/05/2012, à 20:29)
Hors ligne
#4 Le 31/05/2012, à 14:55
- nesthib
Re : [Script/bash] Reduction d'un fichier pdf par script
@xheryx : merci de ne pas poster de demandes d'aide dans ce sous-forum. Tu peux laisser ta demande mais ne l'indique pas dans le titre. J'ai modifié le titre et rajouté un tag. Si le script n'est pas de toi merci aussi d'inclure un lien vers sa source.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#5 Le 31/05/2012, à 20:37
- xheryx
Re : [Script/bash] Reduction d'un fichier pdf par script
@xheryx : merci de ne pas poster de demandes d'aide dans ce sous-forum. Tu peux laisser ta demande mais ne l'indique pas dans le titre. J'ai modifié le titre et rajouté un tag. Si le script n'est pas de toi merci aussi d'inclure un lien vers sa source.
Désolé mais je suis nouveau et je connais pas encore toute les ficelles, pour le lien c'est fait.
J'ai comme l'impression que tu t'y connais en bash, tu peux peut être m'aider pour mon soucis citer plus haut?
Salutation
Hors ligne
#6 Le 01/06/2012, à 04:00
- nesthib
Re : [Script/bash] Reduction d'un fichier pdf par script
Tu peux faire une boucle qui lit soit la liste des fichiers à traiter depuis un fichier (1) soit qui prend le retour d'une commande qui cherche les fichiers à traiter (2).
Exemple (1) :
while read file
do
echo 'on traite le fichier' "${file}"
done <fichier_contenant_la_liste_des_fichier_à_traiter
Exemple (2) :
while read file
do
echo 'on traite le fichier' "${file}"
done < <(find /un/dossier -iname '*.pdf')
En remplaçant bien entendu « echo » par l'opération que tu veux effectuer sur tes fichiers.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#7 Le 01/01/2013, à 19:49
- lemirandais
Re : [Script/bash] Reduction d'un fichier pdf par script
C'est moi qui ne marche pas.
Hors ligne