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 13/10/2016, à 17:53

JujuLand

encodage d'une URI locale

Bonjour,

Je suis en train de paufiner un script python (basé au départ sur mbox-extract-attachments) qui permet, en plus de l'extraction des pièces jointes, de générer un pdf du mail, et ajoute dans le pdf, la liste des pièces jointes.

Ayant réussi à générer correctement les pdf, quelque soit l'encodage du mail (uniquement ISO-8859-1 et UTF-8), je m'attache maintenant à créer des liens dans le pdf des pièces jointes du mail.

J'ai pas mal tatonné, et à force de creuser, j'ai fini par en trouver la syntaxe:

cline="Pièce jointe : "+'<link href="file://'+os.environ['HOME']+"/Bureau/Archives_GADEL/split/Reveillac/"+filename+'">'+filename+"</link>  ("+str(len(content))+" octets)"

Cà ajoute bien le lien.

Premier problème résolu, mais sous 12.04 (je ne sais pas si c'est nécessaire sous une version plus récente), evince refusait de m'ouvrir la pièce jointe. En grattant encore plus fort, j'ai trouvé qu'il fallait ajouter evince dans une liste de apparmor

Voir si evince est dans cette liste:

ls -la /etc/apparmor.d/disable

Si ce n'est pas le cas, l'ajouter par:

sudo ln -s /etc/apparmor.d/usr.bin.evince /etc/apparmor.d/disable/usr.bin.evince 
puis
sudo service apparmor restart

Passé ce problème, j'en ai trouvé un plus épineux:
Comment s'affranchir du problème des caractères spéciaux tels les accents, dans le chemin de la pièce jointe ?

Dans mon exemple, Reveillac était en fait Réveillac, et dans ce cas, le lien est bien créé, mais inaccessible depuis evince

J'ai essayé en remplaçant l'accent par tous les encodages que j'ai trouvés utilisés sur la ligne Subject, ou encore l'encodage des caractères spéciaux pour le html, mais evince n'aime pas.

Sinon, j'aurai bien une solution qui est de d'enlever les accents du dernier dossier, mais je ne suis pas maitre des noms précédents dans le chemin, et qui pourraient en contenir ...

La solution, vu que le pdf est dans le même dossier que ses pièces jointes aurait pu être de ne donner dans le lien que le nom du fichier derrière file://, maiheureusement, là, c'est python qui n'aime pas ...

Si quelqu'un a une solution ... je suis preneur


Merci
A+

Dernière modification par JujuLand (Le 13/10/2016, à 18:16)


Xubuntu 16.04 > Dell DM061 (2007) + Dell Inspiron 531 (2008)
Xubuntu 16.04 > Asus X51L (2009) + MSI GX723 (2009)
Xubuntu 22.04 > HP 15BA048NF (2018)

Hors ligne

#2 Le 21/10/2016, à 12:27

soshy

Re : encodage d'une URI locale

avec un chemin relatif, la balise generee devrait ressembler ca (en supposant que la PJ soit dans le meme repertoire que la source) :

<link href="fichier.xml">fichier.xml</link>

Je ne vois pas de raison particuliere pour que python fasse la gueule.

Hors ligne

#3 Le 21/10/2016, à 16:55

JujuLand

Re : encodage d'une URI locale

Parce qu'un lien, pour lui, est une url:

Pièce(s) jointe(s) trouvée(s)!
Pièce jointe (cliquable): <link href="/home/alain/Documents/Archives GADEL/Reveillac/pollution CITEPA.pdf">pollution CITEPA.pdf</link>  (373789 octets)
Extraction de pollution CITEPA.pdf (373789 octets)
Traceback (most recent call last):
  File "./mbox2pdf-extract-attachments", line 920, in <module>
    docpdf.build(body)
  File "/usr/lib/python2.7/dist-packages/reportlab/platypus/doctemplate.py", line 1117, in build
    BaseDocTemplate.build(self,flowables, canvasmaker=canvasmaker)
...
  File "/usr/lib/python2.7/dist-packages/reportlab/pdfbase/pdfdoc.py", line 1764, in format
    if f is None: raise ValueError, "format not resolved %s" % self.name
ValueError: format not resolved /home/alain/Documents/Archives GADEL/Reveillac/pollution CITEPA.pdf

Alors que çà, il aime:

Pièce(s) jointe(s) trouvée(s)!
Pièce jointe (cliquable): <link href="file:///home/alain/Documents/Archives GADEL/Reveillac/pollution CITEPA.pdf">pollution CITEPA.pdf</link>  (373789 octets)
Extraction de pollution CITEPA.pdf (373789 octets)
--------------

Et, si çà ne dérange pas Python, c'est evince qui n'aime pas ...

Pièce jointe (cliquable): <link href="file://pollution CITEPA.pdf">pollution CITEPA.pdf</link>  (373789 octets)
ou
Pièce jointe (cliquable): <link href="file://./pollution CITEPA.pdf">pollution CITEPA.pdf</link>  (373789 octets)
...
evince >> Impossible d'ouvrir le lien
...
ou encore:
Pièce jointe (cliquable): <link href="file:pollution CITEPA.pdf">pollution CITEPA.pdf</link>  (373789 octets)
...
evince >> Erreur lors de l'obtention des informations du fichier « /home/alain/Documents/Archives GADEL/Reveillac/file:pollution CITEPA.pdf » : Aucun fichier ou dossier de ce type

Je ne vois pas d'autres solutions ...

A+

Dernière modification par JujuLand (Le 21/10/2016, à 16:55)


Xubuntu 16.04 > Dell DM061 (2007) + Dell Inspiron 531 (2008)
Xubuntu 16.04 > Asus X51L (2009) + MSI GX723 (2009)
Xubuntu 22.04 > HP 15BA048NF (2018)

Hors ligne