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 15/01/2018, à 18:56

Ithaca

[Résolu] Script pour reduire la taille d'un ;pdf

Bonsoir,
J'ai trouvé sur le net une ligne de commande pour reduire le poids des fichiers .pdf

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf TOTO.pdf

Comment dois je l'adapter pour pouvoir reduire les fichiers par clic droit  quel que soit leur nom ?
Merci !

Dernière modification par Ithaca (Le 20/01/2018, à 20:30)


Sous Ubuntu 18.04 LTS

Hors ligne

#2 Le 15/01/2018, à 23:09

J5012

Re : [Résolu] Script pour reduire la taille d'un ;pdf

tu utilises les scripts pour nautilus : https://help.ubuntu.com/community/NautilusScriptsHowto

- le fichier toto.pdf sera donc ton argument $@
- si tu veux recuperer le nom toto pour baser dessus le nom du fichier de sortie ? → recuperer l'une des variables de scripts
- si tu veux demander un nom pour le fichier de sortie, tu peux le faire en bash ou avec zenity ...
- tu peux aussi baser le nom de sortie avec output+date+heure , date et heure obtenue avec bash, voir :

man date

en gros :

#!/bin/bash
#on recupere la date
name_from_date=`date`
#on formatte le nouveau nom
new_name_pdf="out $name_from_date.pdf"
#on execute la commande
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="$new_name_pdf" $@

Hors ligne

#3 Le 16/01/2018, à 05:54

le-peyo

Re : [Résolu] Script pour reduire la taille d'un ;pdf

¡ Holà !

@J5012 dans sa signature Ithaca nous dit être sous Xubuntu 17.04 : son ordi tourne donc sous Xfce et il utilise Thunar au lieu de Nautilus.

Il y a l'excellent Pdfmm qui fait le job très bien.

À plus.

Dernière modification par le-peyo (Le 16/01/2018, à 05:58)


Sous Linux depuis 2009 | Xubuntu 22.04 LTS | Lenovo Thinkpad W540
Windows... ? J'connais pas...
Petits scripts vidéos bien pratiques =>
C'est le moment : OMS et Institut Pasteur !

Hors ligne

#4 Le 16/01/2018, à 10:32

metalux

Re : [Résolu] Script pour reduire la taille d'un ;pdf

Bonjour,
Si c'est effectivement Thunar comme gestionnaire de fichiers, le plus simple est de créer une action personnalisée. Ouvre avec mousepad et ajoute à la fin du fichier /home/$USER/.config/Thunar/uca.xml juste avant la dernière ligne </actions> le contenu suivant:

<action>
	<icon>xpdf</icon>
	<name>PDF Réduction</name>
	<unique-id>1515449623364305-21</unique-id>
	<command>for a in %N;do gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=&quot;réduit_$a&quot; &quot;$a&quot;;done</command>
	<description>Compresse chaque PDF indépendemment</description>
	<patterns>*.pdf</patterns>
	<other-files/>
</action>

Si tu souhaites, j'ai 2 autres actions, une pour fusionner et une pour fusionner/réduire en même temps un pdf.
Les actions fonctionnent sur 1 ou plusieurs fichiers.
Il faut réouvrir Thunar pour que l'action s'affiche si celui-ci était déjà ouvert. Le menu contextuel ne s'affiche que si tu te trouves sur un fichier avec l'extension .pdf, dans le cas contraire tu ne le verras pas.

Dernière modification par metalux (Le 16/01/2018, à 10:34)

Hors ligne

#5 Le 16/01/2018, à 13:03

kholo

Re : [Résolu] Script pour reduire la taille d'un ;pdf

salut,
pour nautilus, ce petit script fait très bien le boulot
à adapter :

#! /bin/bash

# AUTHOR:	(c) Ricardo Ferreira
# NAME:		Compress PDF 1.4
# DESCRIPTION:	A nice Nautilus script with a GUI to compress and optimize PDF files
# REQUIRES:	ghostscript, poppler-utils, zenity
# LICENSE:	GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# WEBSITE:	https://launchpad.net/compress-pdf

# Messages
		# English (en-US)
		error_nofiles="No file selected."
		error_noquality="No optimization level selected."
		error_ghostscript="PDF Compress requires the ghostscript package, which is not installed. Please install it and try again."
		error_nopdf="The selected file is not a valid PDF archive."
		label_filename="Save PDF as..."
		label_level="Please choose an optimization level below."
		optimization_level="Optimization Level"
		level_default="Default"
		level_screen="Screen-view only"
		level_low="Low Quality"
		level_high="High Quality"
		level_color="High Quality (Color Preserving)"
		job_done="has been successfully compressed"

case $LANG in

	pt* )
		# Portuguese (pt-PT)
		error_nofiles="Nenhum ficheiro seleccionado."
		error_noquality="Nenhum nível de optimização escolhido."
		error_ghostscript="O PDF Compress necessita do pacote ghostscript, que não está instalado. Por favor instale-o e tente novamente."
		error_nopdf="O ficheiro seleccionado não é um ficheiro PDF válido."
		label_filename="Guardar PDF como..."
		label_level="Por favor escolha um nível de optimização abaixo."
		optimization_level="Nível de Optimização"
		level_default="Normal"
		level_screen="Visualização no Ecrã"
		level_low="Baixa Qualidade"
		level_high="Alta Qualidade"
		level_color="Alta Qualidade (Preservação de Cores)"
		job_done="foi comprimido com sucesso";;


	es* )
		# Spanish (es-AR) by Eduardo Battaglia
		error_nofiles="Ningún archivo seleccionado."
		error_noquality="Ningún nivel de optimización escogido."
		error_ghostscript="Compress PDF necesita el paquete ghostscript, que no está instalado. Por favor instálelo e intente nuevamente."
		label_filename="Guardar PDF como..."
		label_level="Por favor escoja un nivel de optimización debajo."
		optimization_level="Nivel de Optimización"
		level_default="Normal"
		level_screen="Sólo visualización"
		level_low="Baja calidad"
		level_high="Alta calidad"
		level_color="Alta calidad (Preservación de Colores)";;


	cs*)
		# Czech (cz-CZ) by Martin Pavlík
		error_nofiles="Nebyl vybrán žádný soubor."
		error_noquality="Nebyla zvolena úroveň optimalizace."
		error_ghostscript="PDF Compress vyžaduje balíček ghostscript, který není nainstalován. Nainstalujte jej prosím a opakujte akci."
		label_filename="Uložit PDF jako..."
		label_level="Prosím vyberte úroveň optimalizace z níže uvedených."
		optimization_level="Úroveň optimalizace"
		level_default="Výchozí"
		level_screen="Pouze pro čtení na obrazovce"
		level_low="Nízká kvalita"
		level_high="Vysoká kvalita"
		level_color="Vysoká kvalita (se zachováním barev)";;


	fr*)
		# French (fr-FR) by Astromb
		error_nofiles="Aucun fichier sélectionné"
		error_noquality="Aucun niveau d'optimisation sélectionné"
		error_ghostscript="PDF Compress a besoin du paquet ghostscript, mais il n'est pas installé. Merci de l'installer et d'essayer à nouveau."
		error_nopdf="Le fichier que vous avez sélectionné n'est pas un PDF valide."
		label_filename="Sauvegarder le PDF sous..."
		label_level="Merci de choisir, ci-dessous, un niveau d'optimisation."
		optimization_level="Niveau d'optimisation"
		level_default="Défaut"
		level_screen="Affichage à l'écran"
		level_low="Basse qualité"
		level_high="Haute qualité"
		level_color="Haute qualité (Couleurs préservées)";;

	zh_CN*)
		# Simplified Chinese  (zh_CN) by TualatriX Chou
		error_nofiles="没有选择文件。"
		error_noquality="没有优化优化等级。"
		error_ghostscript="PDF压缩需要ghostscript软件包,但是它没有安装。请先安装然后再重试。"
		error_nopdf="选择的文件不是一个有效的PDF文件"
		label_filename="另存为PDF..."
		label_level="请在下面选择优化等级"
		optimization_level="优化等级"
		level_default="默认"
		level_screen="仅在屏幕上浏览"
		level_low="低品质"
		level_high="高品质"
		level_color="高品质(护色) ";;

        ar*)
                # Arabic (ar) by Mohammed hasan Taha
		error_nofiles="لم يتم اختيار ملف"
		error_noquality="لم يتم اختيار درجة الضغط"
		error_ghostscript="هذا السكربت يحتاج حزمة ghostscript package لذا يرجى تنصيبها ثم اعادة المحاولة"
		error_nopdf="الملف الذي تم اختياره ليس ملف pdf  صالح"
		label_filename="حفظ الملف باسم"
		label_level="الرجاء اختيار درجة الضغط"
		optimization_level="درجة الضغط"
		level_default="افتراضي"
		level_screen="عرض للشاشة فقط(الدرجة الأكثر انخفاضا)"
		level_low="جودة منخفضة"
		level_high="جودة مرتفعة"
		level_color="جودة عالية جدا";;

	ml_IN*)
		# Malayalam (ml_IN) by Hrishikesh K B
		error_nofiles="ഒരു ഫയലും  തിരഞ്ഞെടുത്തിട്ടില്ല."
		error_noquality="യാതൊരു ഒപ്റ്റിമൈസേഷന് ലെവലും  തിരഞ്ഞെടുത്തിട്ടില്ല."
		error_ghostscript="പി ഡി എഫ് കംപ്രസ്സറിന് ഗോസ്റ്റ് സ്ക്രിപ്റ്റ് പാക്കേജ് ആവശ്യമാണ്. ആ പാക്കേജ് ഇന്സ്റ്റാള് ചെയ്ത ശേഷം  ദയവായി വീണ്ടും  ശ്രമിക്കുക."
		error_nopdf="തിരഞ്ഞെടുത്ത ഫയല് സാധുവായ ഒരു പിഡിഎഫ് ആര്ച്ചീവ് അല്ല."
		label_filename="പിഡിഎഫ് ഇങ്ങിനെ സംരക്ഷിക്കുക..."
		label_level="ദയവായി താഴെ നിന്നും  ഒരു ഒപ്റ്റിമൈസേഷന് ലെവല് തിരഞ്ഞെടുക്കുക."
		optimization_level="ഒപ്റ്റിമൈസേഷന് ലെവല് "
		level_default="ഡീഫാള്ട്ട്"
		level_screen="സ്ക്രീനില് കാണാന് മാത്രം  "
		level_low="കുറഞ്ഞ നിലവാരം"
		level_high="കൂടിയ നിലവാരം "
		level_color="കൂടിയ നിലവാരം (നിറം  സംരക്ഷിച്ചിട്ടുള്ളത്)"

esac

VERSION="1.4"
ZENITY=$(which zenity)

pdf_file=$(basename "$1")

# Check if Ghostscript is installed
GS="/usr/bin/ghostscript"
if [ ! -x $GS ]; then
        $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_ghostscript"
        exit 0;
fi

# Check if the user has selected any files
if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
        $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_nofiles"
        exit 0;
fi

# Check if the selected file is a PDF
mimetype=$(file -b -i "$1")
if [ -z "`echo $mimetype | grep -i 'pdf' `" ]; then
	$ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_nopdf"
        exit 0;
fi

# Ask the user to select a compressing format
selected_level=$($ZENITY  --list  --title="Compress PDF "$VERSION"" --text "$label_level" --radiolist  --column "" --column "$optimization_level" TRUE "$level_default" FALSE "$level_screen" FALSE "$level_low" FALSE "$level_high" FALSE "$level_color")
if [ -z "$selected_level" ]; then
        $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_noquality"
        exit 0;
fi

# Select the optimization level to use
case $selected_level in
        "$level_default")
                COMP_COMMAND="/default"
        ;;
        "$level_screen")
                COMP_COMMAND="/screen"
        ;;
        "$level_low")
                COMP_COMMAND="/ebook"
        ;;
        "$level_high")
                COMP_COMMAND="/printer"
        ;;
        "$level_color")
                COMP_COMMAND="/prepress"
        ;;
esac

# Choose output file name
temp_filename=.temp-"$pdf_file"
suggested_filename=compressed-"$pdf_file"
output_filename=$($ZENITY --file-selection --save --confirm-overwrite --filename="$suggested_filename" --title="$label_filename")

if [ "$?" = 1 ] ; then
        exit 0;
fi

# Extract metadata from the original PDF
pdfinfo "$1" | sed -e 's/^ *//;s/ *$//;s/ \{1,\}/ /g' -e 's/^/  \//' -e '/CreationDate/,$d' -e 's/$/)/' -e 's/: / (/' > .pdfmarks
sed -i '1s/^ /[/' .pdfmarks
sed -i '/:)$/d' .pdfmarks
echo "  /DOCINFO pdfmark" >> .pdfmarks

# Execute ghostscript while showing a progress bar
(echo "0" ;
 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=$COMP_COMMAND -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$temp_filename" "$1" .pdfmarks
 rm .pdfmarks
 echo "100") | (if `$ZENITY --progress --pulsate --auto-close --title="Compress PDF "$VERSION""`;
                 then
                     mv -f "$temp_filename" "$output_filename" &
                     notify-send "Compress PDF" "$pdf_file $job_done"
                 else
                     killall gs
                     rm "$temp_filename"
                     exit
                 fi)

Hors ligne

#6 Le 16/01/2018, à 13:23

J5012

Re : [Résolu] Script pour reduire la taille d'un ;pdf

les custom actions de thunar ont une interface graphique : https://docs.xfce.org/xfce/thunar/custom-actions
→ dans le champ "command" on peut mettre aussi bien une commande simple avec ou sans argument, qu'un script de traitement suivi de l'argument idoine ...

par ex si on reprend le script du post #2 , on aurait quelque chose comme :

script convert vers pdf pour thunar custom actions a écrit :
#!/bin/bash
#on recupere la date
name_from_date=`date`
#on formatte le nouveau nom
new_name_pdf="out $name_from_date.pdf"
#on execute la commande
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="$new_name_pdf" "$@"

→ si on clic droit selectionne un seul fichier , $@ recoit l'argument %f de la fonctionnalité thunar custom actions
→ si on clic droit selectionne plusieurs fichiers, $@ recoit $F , et il faudra modifier le script avec une boucle de traitement comme :

for var in "$@" ; do ... etc

→ s'inspirer des scripts à : https://www.linux.com/learn/extend-xfce … om-actions

NB : ni dans le post #2 ni dans cette reponse, je ne tiens compte du chemin absolu de sortie du resultat ... le script sera à modifier en consequence ...

Hors ligne

#7 Le 17/01/2018, à 19:46

Ithaca

Re : [Résolu] Script pour reduire la taille d'un ;pdf

genial metalux ! C'est exactement ce qu'il me fallait. Merci beaucoup.
Et merci à tous les autres même si vos suggestions étaient un peu trop techniques pour mon faible niveau;)


Sous Ubuntu 18.04 LTS

Hors ligne

#8 Le 17/01/2018, à 21:14

metalux

Re : [Résolu] Script pour reduire la taille d'un ;pdf

J'ai crée l'action par l'interface graphique, va jeter un coup d’œil pour voir comment elle est faite. Tu comprendras mieux comment ça fonctionne et ça pourra te resservir. Lorsque tu crées une action, elle s'ajoute au fichier uca.xml, aussi il est beaucoup plus simple de faire un copier/coller de ce fichier pour le partager.
N'oublie pas le [résolu] dans le titre en éditant ton 1er message.

Hors ligne