Firefox ouvre mes pièces jointes avec Gedit

Lorsque vous téléchargez un document, souvent depuis le webmail d’Orange, firefox vous propose simplement d’ouvrir celui ci avec gedit ou d’enregistrer le fichier.

Si vous le téléchargez et que vous double-cliquez sur celui ci, il s’ouvre bien avec le logiciel adéquat. Mais il serait plus simple de l’ouvrir directement depuis Firefox (pas dans Firefox) avec le logiciel adapté.

L’exemple que je vais vous donner concerne les fichiers pps, mais c’est adaptable à d’autres types de fichiers.

Ouvrez le fichier ~/.local/share/applications/mimeapps.list (qui associe les types de fichiers avec le logiciel adapté) avec votre éditeur de textes préféré.

Recherchez la ligne application/octet-stream=geany.desktop; et commentez la en mettant un dièse devant( #application/octet-stream=geany.desktop;)

Rajoutez la ligne suivante juste en dessous: application/octet-stream=libreoffice-calc.desktop;gedit.desktop;

Ainsi, Firefox vous proposera libreoffice en premier choix. Peu importe qu’on dise au pps de s’ouvrir avec calc, libreoffice s’adaptera automatiquement et l’ouvrira bien avec impress.

Enregistrez votre fichier, ça devrait fonctionner immédiatement pour le prochain téléchargement sans avoir à relancer quoi que ce soit.

En bonus, je vous met mon fichier mimeapps.list, ce qui peut vous être utile.

[Default Applications]
x-scheme-handler/mailto=thunderbird.desktop
message/rfc822=thunderbird.desktop
application/x-extension-eml=thunderbird.desktop
text/x-python=geany.desktop
application/x-php=geany.desktop
x-content/blank-cd=brasero-nautilus.desktop
application/x-designer=designer-qt4.desktop
text/x-gettext-translation=poedit.desktop
audio/mpeg=totem.desktop
text/html=firefox.desktop
x-scheme-handler/http=firefox.desktop
x-scheme-handler/https=firefox.desktop
x-scheme-handler/about=chromium-browser.desktop
x-scheme-handler/unknown=chromium-browser.desktop
application/pdf=evince.desktop
x-scheme-handler/ftp=firefox.desktop
x-scheme-handler/chrome=firefox.desktop
application/x-extension-htm=firefox.desktop
application/x-extension-html=firefox.desktop
application/x-extension-shtml=firefox.desktop
application/xhtml+xml=firefox.desktop
application/x-extension-xhtml=firefox.desktop
application/x-extension-xht=firefox.desktop
application/msword=libreoffice-writer.desktop
application/vnd.ms-excel=libreoffice-calc.desktop
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop
audio/x-vorbis+ogg=vlc.desktop
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop
application/x-ms-dos-executable=wine.desktop
application/xml=geany.desktop
[Added Associations]
x-scheme-handler/mailto=thunderbird.desktop;
message/rfc822=thunderbird.desktop;
application/x-extension-eml=thunderbird.desktop;
text/x-python=geany.desktop;
application/dicom=gedit.desktop;
application/octet-stream=geany.desktop;libreoffice-calc.desktop;gedit.desktop;
application/x-php=geany.desktop;firefox.desktop;
audio/x-mod=gedit.desktop;
application/x-ms-dos-executable=wine.desktop;
text/plain=gerbv.desktop;libreoffice-writer.desktop;
application/vnd.oasis.opendocument.presentation=libreoffice-writer.desktop;
x-content/blank-cd=brasero-nautilus.desktop;
application/x-designer=designer-qt4.desktop;
text/x-gettext-translation=poedit.desktop;
audio/mpeg=totem.desktop;
text/css=geany.desktop;
application/x-netcdf=gedit.desktop;geany.desktop;
application/x-trash=gedit.desktop;
application/pdf=evince.desktop;
application/vnd.ms-powerpoint=file-roller.desktop;
x-scheme-handler/http=firefox.desktop;
x-scheme-handler/https=firefox.desktop;
x-scheme-handler/ftp=firefox.desktop;
x-scheme-handler/chrome=firefox.desktop;
text/html=firefox.desktop;
application/x-extension-htm=firefox.desktop;
application/x-extension-html=geany.desktop;firefox.desktop;
application/x-extension-shtml=firefox.desktop;
application/xhtml+xml=firefox.desktop;
application/x-extension-xhtml=firefox.desktop;
application/x-extension-xht=firefox.desktop;
application/msword=libreoffice-writer.desktop;
application/vnd.ms-excel=file-roller.desktop;libreoffice-calc.desktop;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet=libreoffice-calc.desktop;
audio/x-vorbis+ogg=vlc.desktop;
application/xml=wine-extension-msp.desktop;wine-extension-vbs.desktop;geany.desktop;
application/vnd.openxmlformats-officedocument.wordprocessingml.document=libreoffice-writer.desktop;
image/jpeg=inkscape.desktop;
application/x-mono-extension-cb=cambam.desktop;
application/x-crossover-msg=geany.desktop;
application/x-wine-extension-vbs=gedit.desktop;
application/x-config=gedit.desktop;
text/x-vb=gedit.desktop;
image/vnd.dxf=inkscape.desktop;
image/png=inkscape.desktop;

Réduire la taille d’un PDF sur Linux

Il y a quelques temps, j’avais écrit un article pour alléger un document PDF. Il faut reconnaitre qu’Openoffice.org crée des PDF avec de l’embonpoint.

J’ai découvert récemment que Ghostscript possédait une option permettant de spécifier comment allait être utilisé le document, que ça aidait fortement à réduire la taille finale, et qu’il était prévu pour les documents PDF.

Il y a trois possibilités principales:

  • Votre document doit être utilisé sur un écran
  • Votre document doit être imprimé sur une imprimante de bureau
  • Votre document sera imprimé sur une imprimante professionnelle (tirage chez un imprimeur)

Un moniteur informatique possède une résolution typique d’une centaine de DPI (pixels par pouces). Ce qui signifie que sur un pouce d’écran il y a une centaine de pixels. Traditionnellement, la résolution utilisée pour des images destinées à l’écran est de 72 DPI. Or, si votre image est à 300 DPI, c’est complètement inutile ! Pour un pouce, vous aurez donc 228 pixels en trop qui prendront de la place dans votre document.

Pour une impression de bonne qualité, une image entre 150 et 200 DPI est suffisante. Si votre image fait 300 DPI, elle est inutilement trop grande.

Si vous avez installé ghostscript, une seule ligne de commande pourra vous rendre bien des services, en particulier si vous devez envoyer vos documents par mail:


gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -sOUTPUTFILE=PDFdeSortie.pdf -f PDFaAlleger.pdf

Remplacez bien sûr, PDFdeSortie et PDFaAlleger par le nom voulu et le nom de votre document.

l’option -dPDFSETTINGS peut prendre les valeurs suivantes:

  • /screen pour un document destiné à l’écran
  • /ebook pour une qualité entre screen et printer (suite aux commentaires de l’article)
  • /printer pour un document destiné à l’impression
  • /prepress pour un document destiné à l’impression professionnelle

Pour info, j’ai utilisé l’option /screen pour un PDF de 40Mo et j’ai obtenu (après une bonne minute de traitement) un PDF de 5.1 Mo.

Le document obtenu s’ouvre bien plus rapidement et la qualité des pages, si elle a légèrement souffert, reste largement suffisante pour lire le texte et les images.

Avec l’option /printer, la taille du document obtenu est de 13.5 Mo sans perte de qualité visible à l’œil par rapport au document d’origine. Mais le document est quand même plus rapide à l’ouverture.

Alléger ou réduire la taille d’un PDF

Les fichiers PDF générés par les programmes sous linux ont une fâcheuse tendance à l’embonpoint.

Il est conseillé de ne pas dépasser 150 dpi dans les réglages d’exportation ou d’impression afin de ne pas avoir un trop gros document, mais parfois, ce n’est pas suffisant pour obtenir un fichier assez léger pour être envoyé par mail.

Voici les commandes à utiliser pour alléger un document PDF

J’ai un document PDF qui servira d’exemple. La taille de base de ce document est de 26.4Mo.

Méthode 1: utiliser l’imprimante PDF de cups pour choisir les réglages

Il faut bien sûr que cups-pdf soit installé sur votre système.

Ouvrez le documents PDF avec votre lecteur de PDF, choisissez de l’imprimer sur l’imprimante PDF, et allez régler les options de manière à imprimer en 150 dpi.

Le nouveau document généré atteint alors une taille de 17.8Mo.

Méthode 2: passer par postscript pour regénérer un PDF léger

Ouvrez un terminal dans le dossier où se trouve votre PDF et entrez la commande suivante, en remplaçant foo par le nom de votre document:

pdftops -paper A4 foo.pdf

vous obtenez, après un temps plus ou moins long, un fichier foo.ps de taille supéroeure à votre PDF d’origine (34.8Mo dans mon cas)

ps2pdf13 foo.ps

Vous obtenez alors un fichier PDF (qui a remplacé votre PDF d’origine, attention à garder votre original au chaud!) très fortement allégé. Dans mon cas, le PDF final fait 1Mo, soit 26 fois moins que le document d’origine!

C’est très appréciable, n’est ce pas?

Envoyer un mail avec pièces jointes en python

Envoyer un mail avec pièces jointes avec python est simple en utilisant le code ci dessous.


import smtplib

import os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encodersdef send_mail(send_from, send_to, subject, text, files=[], server="localhost"):

assert type(send_to)==list
assert type(files)==list
msg = MIMEMultipart()
msg['From'] = send_from
msg['To'] = COMMASPACE.join(send_to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach( MIMEText(text) )

for f in files:
part = MIMEBase('application', "octet-stream")
print f
part.set_payload( open(f,"rb").read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))

msg.attach(part)

smtp = smtplib.SMTP(server)
smtp.sendmail(send_from, send_to, msg.as_string())
smtp.close()

retour = "Une erreur s'est produite lors de l'envoi de mail"
files = [ 'monfichier1.zip', '/tmp/le_fichier.pdf' ] # les pièces jointes avec leur chemin
destinataires = [ 'moi@monsite.com', 'moncopain@chez.lui' ]

try:
send_mail('expediteur@monsite.com', destinataires , "Sujet du mail", "Texte du message",files , 'smtp.free.fr')
except:
send_mail('expediteur@monsite.com', [ 'adresse@secours.fr'] , " [ERROR ] Sujet du message", retour ,[] , 'smtp.free.fr')

C’est tout!

Ah, si!

  • N’utilisez pas ceci à tout va: il est facile de se faire blacklister avec l’étiquette « spammeur ». Et il est très difficile de se faire dé-blacklister.
  • Attention à la taille des pièces jointes. Si vous dépassez la taille limite de votre FAI (30Mo chez free), une erreur bloque le script avec un message du type:  smtplib.SMTPSenderRefused: (552, ‘Message size exceeds fixed limit’, ‘expediteur@monsite.com’)