Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/03/2014, à 14: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, à 12:43)

Hors ligne

#2 Le 23/03/2014, à 14: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, à 16:52)


Lenovo thinkpad edge E330: Windows 8

Hors ligne

#3 Le 23/03/2014, à 14: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, à 14:49)


Lenovo thinkpad edge E330: Windows 8

Hors ligne

#4 Le 23/03/2014, à 15: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, à 16: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)


Lenovo thinkpad edge E330: Windows 8

Hors ligne

#6 Le 23/03/2014, à 16: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.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 23/03/2014, à 16: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, à 16:19

betasub

Re : Commande menu contextuel (shrinkpdf) [RESOLU]

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

Hors ligne

#9 Le 04/04/2014, à 00: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 04/04/2014, à 00:09)

Hors ligne

#10 Le 06/04/2014, à 15: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, à 16: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