Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 23/03/2014, à 13:18

betasub

Commande menu contextuel (shrinkpdf) [RESOLU]

Bonjour à tous. J'ai dans mes documents de nombreux fichiers pdf, la plupart dépassant les 100Mo. Par chance, j'ai trouvé ce petit script qui permet de réduire la résolution à 72DPI. Je passe ainsi en général à 15Mo ; pas mal!

Je tape donc, le script étant dans /home/tristan , ./shrinkpdf.sh nomdufichier.pdf nomdesortie.pdf et hop ça convertit.

Mais c'est long d'ouvrir les terminaux, copier les noms (parfois tordus)... donc je voulais le mettre dans le menu contextuel. Clic droit, open with, Custom command line et je tape shrinkpdf.
Je pars dans /home/tristan/.local/share/applications , où je retrouve mon fichier desktop.

J'ouvre ça et je tombe sur

[Desktop Entry]
Type=Application
Name=shrinkpdf
Exec=/home/tristan/shrinkpdf.sh blablablablablablablabla %f
Categories=Other;
NoDisplay=true
MimeType=application/pdf


Que mettre à la place de blablabla pour dire au script que le nom du fichier à traiter est le fichier sur lequel j'ai cliqué droit, et lui donner comme nom de sortie ce même nom+compress à la fin ou un truc comme ça...

Ça doit pas être bien compliqué, j'ai cherché, mais j'ai pas trouvé!
En plus ensuite ça peut s'étendre à de nombreuses choses et ça automatise vachement les scripts!

Merci à tous pour votre aide, Tristan.

Dernière modification par betasub (Le 28/04/2014, à 11:43)

Hors ligne

#2 Le 23/03/2014, à 13:46

lucas8100

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

bonjour,

la première chose que tu peut faire: plutôt que d’ouvrir des terminals met  ta commande en arrière plan.(je te met l'image)   
http://fr.openclassrooms.com/informatique/cours/reprenez-le-controle-a-l-aide-de-linux/nohup-lancer-un-processus-en-arriere-plan

sinon tu peut mettre ton script dans un des répertoires du PATH:
847986Capturedu20140323133353.png

Dernière modification par lucas8100 (Le 23/03/2014, à 15:52)


ne jamais faire
sudo rm -rf /*

Hors ligne

#3 Le 23/03/2014, à 13:48

lucas8100

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

et le lancer a l'aide de find dans le dossier ou se situe tes PDF.

find *.pdf -exec #comande

avec #comande le script a effectuer
mais je pense que cette commande est fausse et ne marchera pas.(corrigez moi svp)

j’espère que je t'aurais quand même aidé smile


ps: je sait pas pourquoi mais le post en entier ne fonctionnait pas...

Dernière modification par lucas8100 (Le 23/03/2014, à 13:49)


ne jamais faire
sudo rm -rf /*

Hors ligne

#4 Le 23/03/2014, à 14:54

betasub

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

Lucas8100, merci pour ta réponse!! J'ai bien lu ce que tu m'as envoyé, mais il me semble que ça ne va pas coller à mon cas. (mais il y a des choses intéressantes sur la localisation des scripts) Je me suis peut être mal expliqué! Le but est de prendre n'importe quel pdf, clic droit "shrinkpdf" et ça le compresse. Vu que skrinkpdf demande 2 paramètres, celui du nom du pdf à convertir et le nom du pdf de sortie, quelle syntaxe faut il utiliser pour dire à shrinkpdf que le nom qu'il attend, "$1", est le nom du pdf sur lequel j'ai cliqué droit...

Enfin si quelqu'un a une solution alternative, je prends aussi!

Hors ligne

#5 Le 23/03/2014, à 15:04

lucas8100

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

désolé si ça ne correspondais pas a ta demande.
a ma connaissance on ne peut pas lancer un script en mode graphique(surtout en lui donnant des arguments mais peut-être que j'ai tort)


ne jamais faire
sudo rm -rf /*

Hors ligne

#6 Le 23/03/2014, à 15:15

Watael

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

salut,

peut-être en modifiant le script pour qu'il n'attende pas un deuxième argument, mais que le nom du fichier de destination soit créé avec `mktemp', qui sera ensuite ouvert avec une visionneuse pdf avec laquelle tu enregistreras la version compressée où tu veux, avec le nom que tu veux, comme quand tu télécharges un pdf avec un explorateur internet.


eval, c'est mal.

Hors ligne

#7 Le 23/03/2014, à 15:17

betasub

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

C'est même pas un mode graphique, en fait dans le menu contextuel, tu associes un format de fichier à une commande personnalisée.
Pas de quoi être désolé merci pour ta réponse! Y'a bien quelqu'un qui va me donner un tuyau smile

Hors ligne

#8 Le 23/03/2014, à 15:19

betasub

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

Watael, oui je vois... mais comment faire avec le premier argument?

Hors ligne

#9 Le 03/04/2014, à 23:00

Nico207

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

Bonjour à tous.

Voici le script que j'ai ajouté à Nautilus. Il me permet via un clic droit de réduire le ou les PDF sélectionnés.
Le script d'origine (avant modification) provient de Alfred Klomp (Shrinkpdf)

  • Créé le fichier "Reduire les PDF" (par exemple) dans le répertoire"/home/##USER##/.local/share/nautilus/scripts/"

  • Ouvre-le et copie le script ci-dessous

  • Ne pas oublier de le rendre exécutable (chmod 744 Nom_du_Script)

Après un redémarrage de Nautilus, tu auras sur le clic droit (après avoir sélectionné un ou plusieurs fichiers) le menu "Script", et dans ce menu l'action "Reduire les PDF"

Par defaut, il refait les PDF avec une résolution de 128 et il nomme le fichier de sortie comme celui (ou ceux) en entré mais en y ajoutant le prefixe "-small".
Ces 2 choses peuvent facilement être modifiées en changeant les valeurs QUALITY et PREFIX au début du script.
QUALITY=NN
PREFIX="ZZZZZZ"

Enjoy!

#!/bin/sh

# http://www.alfredklomp.com/programming/shrinkpdf
# Licensed under the 3-clause BSD license:
#
# Copyright (c) 2014, Alfred Klomp
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 1. Redistributions of source code must retain the above copyright notice,
#    this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright notice,
#    this list of conditions and the following disclaimer in the documentation
#    and/or other materials provided with the distribution.
# 3. Neither the name of the copyright holder nor the names of its contributors
#    may be used to endorse or promote products derived from this software
#    without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.


# Modification for Nautilus by Nico207


QUALITY=128
PREFIX="-small"

shrink()
{
	gs \
  	-sDEVICE=pdfwrite \
  	-o "$2" \
	-dColorImageDownsampleThreshold=1.0 \
	-dGrayImageDownsampleThreshold=1.0 \
	-dMonoImageDownsampleThreshold=1.0 \
	-dColorImageDownsampleType=/Bicubic \
	-dGrayImageDownsampleType=/Bicubic \
	-dMonoImageDownsampleType=/Bicubic \
	-dDownsampleColorImages=true \
	-dDownsampleGrayImages=true \
	-dDownsampleMonoImages=true \
	-dColorImageResolution=$QUALITY \
	-dGrayImageResolution=$QUALITY \
	-dMonoImageResolution=$QUALITY \
	-dAutoFilterColorImages=false \
	-dAutoFilterGrayImages=false \
	\
	-dEncodeColorImages=true \
	-dEncodeGrayImages=true \
	-dEncodeMonoImages=true \
	-dColorImageFilter=/DCTEncode \
	-dGrayImageFilter=/DCTEncode \
	-dMonoImageFilter=/CCITTFaxEncode \
	"$1"
}

check_smaller ()
{
	# If $1 and $2 are regular files, we can compare file sizes to
	# see if we succeeded in shrinking. If not, we copy $1 over $2:
	if [ ! -f "$1" -o ! -f "$2" ]; then
		return 0;
	fi
	ISIZE="$(wc -c "$1" | cut -f1 -d\ )"
	OSIZE="$(wc -c "$2" | cut -f1 -d\ )"
	if [ "$ISIZE" -lt "$OSIZE" ]; then
		echo "Input smaller than output, doing straight copy" >&2
		cp "$1" "$2"
		#rm "$2"
	fi
}


IFS='
'
printf %s "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" |
while read -r fichiersPDF
do
	target_dir=$(dirname "$fichiersPDF")
	filename=$(basename "$fichiersPDF")
	filename=${filename##*/}
	extname=${filename##*.}

	if test $extname = "pdf"
	then
		filename=${filename%.*}
		target_file=$target_dir"/"$filename""$PREFIX".tmp"
	
		shrink "$fichiersPDF" "$target_file"
		check_smaller "$fichiersPDF" "$target_file"
	
		mv $target_file $target_dir"/"$filename""$PREFIX"."$extname
	fi
done

Dernière modification par Nico207 (Le 03/04/2014, à 23:09)

Hors ligne

#10 Le 06/04/2014, à 14:48

betasub

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

merci pour ta réponse, je ne peux pas tester là pour l'instant mais ça a l'air très intéressant!
Je pense que ça servira à beaucoup de monde...

Tristan

Hors ligne

#11 Le 25/04/2014, à 15:30

betasub

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

Nico 207, je n'ai pu tester ta méthode que maintenant. J'ai fait 2 scripts, un "PDF128" et un "PDF72" pour les emails.

Extrêmement pratique, c'est vraiment ce que je voulais, je te remercie!

Tristan.

Hors ligne

Haut de page ↑