Ajout des outils gpdftk et pdf180.
authorProgfou <jean-christophe.andre@auf.org>
Fri, 12 Mar 2010 10:26:56 +0000 (17:26 +0700)
committerProgfou <jean-christophe.andre@auf.org>
Fri, 12 Mar 2010 10:26:56 +0000 (17:26 +0700)
outils/gpdftk [new file with mode: 0755]
outils/pdf180 [new file with mode: 0755]

diff --git a/outils/gpdftk b/outils/gpdftk
new file mode 100755 (executable)
index 0000000..16e3e28
--- /dev/null
@@ -0,0 +1,141 @@
+#!/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
diff --git a/outils/pdf180 b/outils/pdf180
new file mode 100755 (executable)
index 0000000..5673c93
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/bash
+# un outil de rotation de PDF compatible Evince... au prix de perte de qualité
+if [ -z "$1" -o ! -f "$1" ]; then
+  echo "Usage: $0 input.pdf [output.pdf]"
+  exit 1
+fi
+IN="$1"
+[ "$2" ] && OUT="$2" || OUT="`echo "$1" | sed 's/\.pdf$/-180.pdf/'`"
+DIR=`mktemp -d`
+pdfimages "$IN" "$DIR"/img
+for f in "$DIR"/img-*.pbm ; do
+  convert "$f" -negate -rotate 180 pnm:- |
+  pnmtops -noturn 2>/dev/null |
+  ps2pdf - "${f%.pbm}.pdf"
+done
+pdfjoin --outfile "$OUT" "$DIR"/img-*.pdf >/dev/null
+rm -rf "$DIR"