From 5a6f71bacf976ca2aebfb01c346fea85ccea1d31 Mon Sep 17 00:00:00 2001 From: Progfou Date: Fri, 12 Mar 2010 17:26:56 +0700 Subject: [PATCH] Ajout des outils gpdftk et pdf180. --- outils/gpdftk | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ outils/pdf180 | 17 +++++++ 2 files changed, 158 insertions(+) create mode 100755 outils/gpdftk create mode 100755 outils/pdf180 diff --git a/outils/gpdftk b/outils/gpdftk new file mode 100755 index 0000000..16e3e28 --- /dev/null +++ b/outils/gpdftk @@ -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à +# 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 index 0000000..5673c93 --- /dev/null +++ b/outils/pdf180 @@ -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" -- 1.7.10.4