--- /dev/null
+#!/bin/bash
+# gpdftk — interface graphique pour pdftk (manipulation de PDF)
+# Copyright ©2009-2010 Agence universitaire de la Francophonie
+# http://www.auf.org/
+# Licence : GNU General Public License, version 3
+# Auteur : Đoàn Mạnh Hà <doan.manh.ha@auf.org>
+# Création : 2009-06-02
+# Mise à jour : 2010-01-13
+PDFVIEWER="acroread"
+FILEBROWSER="nautilus"
+
+TEMPFILE=`tempfile`
+trap "rm -f \"$TEMPFILE\"" 0 1 2 3 15
+
+###########################################################################
+# jointure de fichiers PDF
+###########################################################################
+
+operation_joindre() {
+ zenity --file-selection --multiple > "$TEMPFILE"
+ if [ $? != 0 ]; then return 1; fi
+ OUT=`zenity --file-selection --filename="output.pdf" --save`
+ if [ $? != 0 ]; then return 1; fi
+ eval "pdftk `sed 's/^/"/;s/|/" "/g;s/$/"/' "$TEMPFILE"` cat output \"$OUT\""
+ $PDFVIEWER "$OUT" &
+ return 0
+}
+
+###########################################################################
+# extraction de toutes les pages d'un fichier PDF
+###########################################################################
+
+operation_extraire_toutes() {
+ echo "Vous avez choisi 'extraire toutes les pages'."
+ OUT=`zenity --file-selection`
+ if [ $? != 0 ]; then return 1; fi
+ DIR="$OUT".tmp
+ mkdir "$DIR"
+ cd "$DIR"
+ eval "pdftk \"$OUT\" burst"
+ if [ $? != 0 ]; then
+ zenity --info --text="Erreur pendant l'extraction. Un problème dans les plages spécifiées peut-être ?"
+ return 1
+ fi
+ zenity --info --text="L'extraction est terminée.
+Elle a été effectuée dans le répertoire temporaire suivant :
+ $DIR
+
+Merci d'effacer ce répertoire temporaire à la fermeture du navigateur de fichiers."
+ $FILEBROWSER .
+ return 0
+}
+
+###########################################################################
+# extraction de plages de pages d'un fichier PDF
+###########################################################################
+
+operation_extraire_plage() {
+ echo "Extraire une ou plusieurs plages de pages d'un fichier PDF'."
+ if [ $? != 0 ]; then return 1; fi
+ OUT=`zenity --file-selection `
+ if [ $? != 0 ]; then return 1; fi
+ PLAGE=`zenity --entry --text="Pour extraire de la page 1 à 6, vous saissiez comme suit : A1-6 "`
+ if [ $? != 0 ]; then return 1; fi
+ DIR="$OUT".tmp
+ mkdir "$DIR"
+ cd "$DIR"
+ eval "pdftk A=\"$OUT\" cat \"$PLAGE\" output mon_pdf_extrait.pdf"
+ if [ $? != 0 ]; then
+ zenity --info --text="Erreur pendant l'extraction. Un problème dans les plages spécifiées peut-être ?"
+ return 1
+ fi
+ zenity --info --text="L'extraction est terminée.
+Elle a été effectuée dans le répertoire temporaire suivant :
+ $DIR
+
+Merci d'effacer ce répertoire temporaire à la fermeture du navigateur de fichiers."
+ $FILEBROWSER .
+ return 0
+}
+
+###########################################################################
+# rotation de fichiers PDF
+###########################################################################
+
+operation_rotation() {
+ echo "Vous avez choisi 'rotation'."
+ if [ $? != 0 ]; then return 1; fi
+ OUT=`zenity --file-selection `
+ if [ $? != 0 ]; then return 1; fi
+ DEGRE=`zenity --entry --text="Pour une rotation 90°, 180°, 270°vous saissiez comme suit : 1-endE ou 1-endS ou 1-endW"`
+ if [ $? != 0 ]; then return 1; fi
+ DIR="$OUT".tmp
+ mkdir "$DIR"
+ cd "$DIR"
+ eval "pdftk A=\"$OUT\" cat \"$DEGRE\" output mon_pdf_rotation.pdf"
+ if [ $? != 0 ]; then
+ zenity --info --text="Erreur pendant la rotation. Un problème dans la saisie peut-être ?"
+ return 1
+ fi
+ zenity --info --text="La rotation est terminée.
+Elle a été effectuée dans le répertoire temporaire suivant :
+ $DIR
+
+Merci d'effacer ce répertoire temporaire à la fermeture du navigateur de fichiers."
+ $PDFVIEWER mon_pdf_rotation.pdf
+ return 0
+}
+
+###########################################################################
+# boucle de gestion du menu principal
+###########################################################################
+
+while true; do
+
+ zenity --width 430 --height 230 --list --title "Traitement des PDF" \
+ --text "Choisissez l'opération souhaitée :" \
+ --column "" --column "Opération" --radiolist \
+ - "Joindre plusieurs fichiers PDF ensemble" \
+ - "Extraire toutes les pages d'un fichier PDF" \
+ - "Extraire une ou plusieurs plages de pages d'un fichier PDF" \
+ - "Effectuer une rotation sur un fichier PDF" \
+ > "$TEMPFILE"
+ if [ $? = 1 ]; then exit 0; fi
+
+ case "`cat "$TEMPFILE"`" in
+ "Joindre"*) if operation_joindre; then exit 0; fi ;;
+ "Extraire toutes"*) if operation_extraire_toutes; then exit 0; fi ;;
+ *"plage"*) if operation_extraire_plage; then exit 0; fi ;;
+ *"rotation"*) if operation_rotation; then exit 0; fi ;;
+ "") zenity --info --text "Vous devez choisir une opération." ;;
+ *) echo "Erreur : cas non géré." ; exit 1 ;;
+ esac
+
+done
+
+###########################################################################
+# fin du programme
+###########################################################################
+
+exit 0