Pages : 1
#1 Le 13/10/2016, à 16: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, à 17: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, à 11: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, à 15: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, à 15: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
Pages : 1