Ajout des outils gpdftk et pdf180.
[progfou.git] / outils / gpdftk
CommitLineData
5a6f71ba
P
1#!/bin/bash
2# gpdftk — interface graphique pour pdftk (manipulation de PDF)
3# Copyright ©2009-2010 Agence universitaire de la Francophonie
4# http://www.auf.org/
5# Licence : GNU General Public License, version 3
6# Auteur : Đoàn Mạnh Hà <doan.manh.ha@auf.org>
7# Création : 2009-06-02
8# Mise à jour : 2010-01-13
9PDFVIEWER="acroread"
10FILEBROWSER="nautilus"
11
12TEMPFILE=`tempfile`
13trap "rm -f \"$TEMPFILE\"" 0 1 2 3 15
14
15###########################################################################
16# jointure de fichiers PDF
17###########################################################################
18
19operation_joindre() {
20 zenity --file-selection --multiple > "$TEMPFILE"
21 if [ $? != 0 ]; then return 1; fi
22 OUT=`zenity --file-selection --filename="output.pdf" --save`
23 if [ $? != 0 ]; then return 1; fi
24 eval "pdftk `sed 's/^/"/;s/|/" "/g;s/$/"/' "$TEMPFILE"` cat output \"$OUT\""
25 $PDFVIEWER "$OUT" &
26 return 0
27}
28
29###########################################################################
30# extraction de toutes les pages d'un fichier PDF
31###########################################################################
32
33operation_extraire_toutes() {
34 echo "Vous avez choisi 'extraire toutes les pages'."
35 OUT=`zenity --file-selection`
36 if [ $? != 0 ]; then return 1; fi
37 DIR="$OUT".tmp
38 mkdir "$DIR"
39 cd "$DIR"
40 eval "pdftk \"$OUT\" burst"
41 if [ $? != 0 ]; then
42 zenity --info --text="Erreur pendant l'extraction. Un problème dans les plages spécifiées peut-être ?"
43 return 1
44 fi
45 zenity --info --text="L'extraction est terminée.
46Elle a été effectuée dans le répertoire temporaire suivant :
47 $DIR
48
49Merci d'effacer ce répertoire temporaire à la fermeture du navigateur de fichiers."
50 $FILEBROWSER .
51 return 0
52}
53
54###########################################################################
55# extraction de plages de pages d'un fichier PDF
56###########################################################################
57
58operation_extraire_plage() {
59 echo "Extraire une ou plusieurs plages de pages d'un fichier PDF'."
60 if [ $? != 0 ]; then return 1; fi
61 OUT=`zenity --file-selection `
62 if [ $? != 0 ]; then return 1; fi
63 PLAGE=`zenity --entry --text="Pour extraire de la page 1 à 6, vous saissiez comme suit : A1-6 "`
64 if [ $? != 0 ]; then return 1; fi
65 DIR="$OUT".tmp
66 mkdir "$DIR"
67 cd "$DIR"
68 eval "pdftk A=\"$OUT\" cat \"$PLAGE\" output mon_pdf_extrait.pdf"
69 if [ $? != 0 ]; then
70 zenity --info --text="Erreur pendant l'extraction. Un problème dans les plages spécifiées peut-être ?"
71 return 1
72 fi
73 zenity --info --text="L'extraction est terminée.
74Elle a été effectuée dans le répertoire temporaire suivant :
75 $DIR
76
77Merci d'effacer ce répertoire temporaire à la fermeture du navigateur de fichiers."
78 $FILEBROWSER .
79 return 0
80}
81
82###########################################################################
83# rotation de fichiers PDF
84###########################################################################
85
86operation_rotation() {
87 echo "Vous avez choisi 'rotation'."
88 if [ $? != 0 ]; then return 1; fi
89 OUT=`zenity --file-selection `
90 if [ $? != 0 ]; then return 1; fi
91 DEGRE=`zenity --entry --text="Pour une rotation 90°, 180°, 270°vous saissiez comme suit : 1-endE ou 1-endS ou 1-endW"`
92 if [ $? != 0 ]; then return 1; fi
93 DIR="$OUT".tmp
94 mkdir "$DIR"
95 cd "$DIR"
96 eval "pdftk A=\"$OUT\" cat \"$DEGRE\" output mon_pdf_rotation.pdf"
97 if [ $? != 0 ]; then
98 zenity --info --text="Erreur pendant la rotation. Un problème dans la saisie peut-être ?"
99 return 1
100 fi
101 zenity --info --text="La rotation est terminée.
102Elle a été effectuée dans le répertoire temporaire suivant :
103 $DIR
104
105Merci d'effacer ce répertoire temporaire à la fermeture du navigateur de fichiers."
106 $PDFVIEWER mon_pdf_rotation.pdf
107 return 0
108}
109
110###########################################################################
111# boucle de gestion du menu principal
112###########################################################################
113
114while true; do
115
116 zenity --width 430 --height 230 --list --title "Traitement des PDF" \
117 --text "Choisissez l'opération souhaitée :" \
118 --column "" --column "Opération" --radiolist \
119 - "Joindre plusieurs fichiers PDF ensemble" \
120 - "Extraire toutes les pages d'un fichier PDF" \
121 - "Extraire une ou plusieurs plages de pages d'un fichier PDF" \
122 - "Effectuer une rotation sur un fichier PDF" \
123 > "$TEMPFILE"
124 if [ $? = 1 ]; then exit 0; fi
125
126 case "`cat "$TEMPFILE"`" in
127 "Joindre"*) if operation_joindre; then exit 0; fi ;;
128 "Extraire toutes"*) if operation_extraire_toutes; then exit 0; fi ;;
129 *"plage"*) if operation_extraire_plage; then exit 0; fi ;;
130 *"rotation"*) if operation_rotation; then exit 0; fi ;;
131 "") zenity --info --text "Vous devez choisir une opération." ;;
132 *) echo "Erreur : cas non géré." ; exit 1 ;;
133 esac
134
135done
136
137###########################################################################
138# fin du programme
139###########################################################################
140
141exit 0