#1 Le 06/09/2022, à 19:55
- RoiBurgonde
Script nautilus pour fusionner plusieurs fichiers pdf
Bonjour à tous,
J'ai trouvé un script nautilus afin de fusionner des pdf que je sélectionne dans un dossier :
#!/bin/bash
ifs=$IFS
IFS='\
'
PDFARGUMENTS=""
fpaths=`echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | sort`
for file in $fpaths
do
if [ -f "$file" ]; then
base=${file%.*}
ext=${file##*.}
if [ "$ext" == "pdf" ]; then
PDFARGUMENTS="$PDFARGUMENTS \"$file\""
#pdfdir=`dirname "$file"`
fi
fi
done
#szSavePath=$(zenity --file-selection --save --confirm-overwrite);echo "$szSavePath"
if [ -n "$PDFARGUMENTS" ]; then
# eval pdftk "$PDFARGUMENTS" cat output "$szSavePath"
eval pdftk "$PDFARGUMENTS" cat output "merge_result.pdf"
fi
IFS=$ifs
Seulement je n'arrive pas à obtenir le fichier fusionné dans le dossier initial des fichiers.
Je m'explique, si les fichiers que je veux fusionner se trouvent dans Documents/dossier1/dossier2/dossier3, le résultat de la fusion arrive dans Documents et pas dans Documents/.../dossier3.
J'ai bien compris qu'en jouant avec les "#" je pouvais utiliser zenity pour choisir le dossier de destination mais je ne veux pas utiliser cette option. J'aimerais que la fusion s'effectue directement dans le sous dossier d'origine.
Je ne suis pas fortiche en codage donc j'ai besoin d'un peu d'aide, d'autant que je pressens qu'il n'y a pas grand chose à modifier...
Je vous remercie d'avance de l'aide apportée!
Hors ligne
#2 Le 07/09/2022, à 05:50
- MicP
Re : Script nautilus pour fusionner plusieurs fichiers pdf
Bonjour
Je n'ai pas de système ubuntu avec nautilus sous la main
donc je n'ai pas pu le tester, mais essaye avec ça :
le chemin du dernier fichier de la liste sera utilisé comme chemin pour le fichier merge_result.pdf
#!/bin/bash
ifs=$IFS
IFS='\
'
pdfdir=""
PDFARGUMENTS=""
fpaths=`echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | sort`
for file in $fpaths
do
if [ -f "$file" ]; then
base=${file%.*}
ext=${file##*.}
if [ "$ext" == "pdf" ]; then
PDFARGUMENTS="$PDFARGUMENTS \"$file\""
pdfdir=`dirname "$file"`
fi
fi
done
#szSavePath=$(zenity --file-selection --save --confirm-overwrite);echo "$szSavePath"
if [ -n "$PDFARGUMENTS" ]; then
# eval pdftk "$PDFARGUMENTS" cat output "$szSavePath"
eval pdftk "$PDFARGUMENTS" cat output "$pdfdir/merge_result.pdf"
fi
IFS=$ifs
Hors ligne
#3 Le 07/09/2022, à 08:08
- Watael
Re : Script nautilus pour fusionner plusieurs fichiers pdf
salut,
- l'IFS est assigné à rien, parce que l'anti-slash inhibe le saut de ligne, mais de toutes façons, il est préférable de ne pas modifier cette variable globalement.
- l'initialisation de variables vides ne sert à rien si une description ne leur est pas ajoutée.
- les noms de variables tout en majuscules sont reservés aux variables d'environnement système; les variables utilisateurs peuvent être panachées (minuscules et majuscules).
- $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS est déjà trié; fpaths ne sert donc à rien.
- il vaut mieux utiliser la variable NAUTILUS_SCRIPT_SELECTED_URIS, parce que les noms de fichiers peuvent contenir des sauts de lignes...
pdfArgs+="${file:+"$file "}"
pdfDir=${file%/*}
Dernière modification par Watael (Le 07/09/2022, à 08:09)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#4 Le 07/09/2022, à 08:58
- MicP
Re : Script nautilus pour fusionner plusieurs fichiers pdf
Oui, j'aurais dû m'abstenir de faire une proposition tellement tout ça semblait incohérent,
et n'utiisant pas nautilus, dans le doute, j'ai préféré laisser tel quel ce qui avait déjà été fait
étant donné que je ne pouvais pas savoir ce qu'il fallait garder ou proposer comme solution.
Désolé.
Dernière modification par MicP (Le 07/09/2022, à 08:58)
Hors ligne
#5 Le 07/09/2022, à 10:48
- RoiBurgonde
Re : Script nautilus pour fusionner plusieurs fichiers pdf
salut,
- l'IFS est assigné à rien, parce que l'anti-slash inhibe le saut de ligne, mais de toutes façons, il est préférable de ne pas modifier cette variable globalement.
- l'initialisation de variables vides ne sert à rien si une description ne leur est pas ajoutée.
- les noms de variables tout en majuscules sont reservés aux variables d'environnement système; les variables utilisateurs peuvent être panachées (minuscules et majuscules).
- $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS est déjà trié; fpaths ne sert donc à rien.
- il vaut mieux utiliser la variable NAUTILUS_SCRIPT_SELECTED_URIS, parce que les noms de fichiers peuvent contenir des sauts de lignes...pdfArgs+="${file:+"$file "}"
pdfDir=${file%/*}
Vous semblez bien vous y connaître alors que moi pas du tout
Pourriez-vous me proposer une version modifiée du script? J'ai essayé de suivre ce que vous avez écrit mais franchement je dois louper quelque chose...
Merci d'avance.
Hors ligne
#6 Le 07/09/2022, à 13:00
- Watael
Re : Script nautilus pour fusionner plusieurs fichiers pdf
#!/bin/bash
for f in $NAUTILUS_SCRIPT_SELECTED_URIS
do
files+=( "$(printf '%b' "${f//%/\\x}" )" )
done
files=( "${files[@]##*://}" )
pdftk "${files[@]}" cat output "${files[0]%/*}/merge_result.pdf"
Dernière modification par Watael (Le 07/09/2022, à 13:02)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 07/09/2022, à 13:04
- RoiBurgonde
Re : Script nautilus pour fusionner plusieurs fichiers pdf
@Watael
Je vous remercie infiniment! Ça fonctionne parfaitement !!!
Belle journée à vous!
Hors ligne