Nous sommes le Mer 24 Avr, 2024 22:21
Supprimer les cookies

(Batch) Convertisseur eml to PDF

Pour une tâche précise, pour remplacer un logiciel propriétaire donné...

Sam 19 Nov, 2011 00:18

Bonjour,

Je cherche à effectuer le backup de mes emails sous formats PDF.

Idée : les convertir en eml (Possible sous Thunderbird) puis de eml en PDF.

Quid un logiciel qui fasse cela en batch.

Merci
liveit

Messages : 1

Lun 21 Nov, 2011 00:44

Salut.

Les convertisseurs eml2pdf que je trouve ne sont pas gratuits ni open source.
Si tu es sous Linux ou Cygwin et parce que eml n'est pas trop différent de texte ordinaire, la première chose qui vient à l'esprit est

Code: Tout sélectionner
user@machine:$ a2ps file.eml -o file.ps
user@machine:$ ps2pdf14 file.ps file.pdf


Il faudrait ensuite un script «eml2pdf» comme
Code: Tout sélectionner
for f in *.eml; do a2ps "$f" -o temp.ps; ps2pdf14 temp.ps `basename $f .eml`.pdf; done


Ça donne quelque chose comme ce fichier: colibris_ps.pdf.

Peut-être il y a un raccourci avec une «imprimante PDF».

J'ajoute
S'il y a un vrai besoin, les dieux du Perl devraient avoir des idées et rapidement convertissent le eml en xml (et pourquoi pas xhtml).
Je ferais ça en Ruby et ensuite ferais une transformation XSL/FO afin de générer le PDF souhaité.


[MODIFS]
Dernière édition par versleouest le Sam 10 Mars, 2012 10:30, édité 2 fois au total.
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Mer 23 Nov, 2011 11:25

S'il n'y a pas d'autres réponses, je vais élaborer mon idée d'en haut et fournir le système à convertir eml en PDF en deux étapes, via XML.
La transformation finale ne pose pas de réelle problème, le moment que j'arrive à convertir Quoted Printable en UTF-8.

Question: Est-ce que c'est inconvénient, si le convertisseur eml2xml est programmé en Ruby?
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Jeu 24 Nov, 2011 08:44

Le système s’appellera «Crème Fraiche», j'ai décidé. Parce que, tu peux faire n'importe quoi avec Crème Fraiche et c'est toujours bon et parce que c'est pareil avec le XML intermédiaire, que je produis. ;-)
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Jeu 24 Nov, 2011 14:45

Un archive zip, contenant le programme en production. Les composants semblent complet. Il manquent

    1. le traitement des sections d'un message «multipart» et le stockage des fichiers joints, ce qui reste simplement à taper
    2. la complétion du style-sheet pour la transformation XSL/FO en PDF. Ça se fait en parallèle avec le code Ruby, quand j'ai besoin d'une pause
    3. une configuration via YAML des divers options; je vais la programmer quand le reste fonctionne
    4. une documentation ...
    5. un interface graphique, que je ne veux pas fournir moi-même, parce que la compatibilité de Ruby/Gtk n'est pas super et Qt-Ruby ne fonctionne pas chez moi.
CremeFraiche (88K)
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Ven 02 Déc, 2011 15:31

J'ai maintenant une version presque utilisable, qui extrait d'un fichier EML chaque message à convertir, sépare et présente bien les parties des mails «multipart», applique des variables fournis par l'utilisateur et qui s'arrange presque avec les divers possibilités de «encoding».

Malheureusement, le traitement des derniers est compliqué et je cherche encore à perfectionner le code, car, quelques mails ne sont simplement pas converti correctement, pendant les autres font des jolies PDFs....

Plus à suivre. Je vais publier une page sur mon site avec un peu de documentation. Pour l'instant on utilise le convertisseur à la ligne de commande:
Code: Tout sélectionner
user@machine:~$ ruby cremefreche.rb fichier.eml ... <plus de fichiers.eml>

Le résultat est un fichier.xml et un fichier.pdf qui correspondent chacun à une message précise. S'il y en a eu plusieurs dans un fichier.eml, un préfixe numérique est appliqué: 1_fichier.xml, 2_fichier.xml etc.
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Dim 11 Déc, 2011 23:42

Résumée: Le problème qui se pose quand on veut automatiser la transformation des émail, c'est la préparation du logiciel au grand choix de formats.

Simple "Plain-Text" n'a pas besoin de traitement, pendant que les messages en HTML sont l'horreur. D'un fichier *.eml de 150 messages, environ 10% ne peuvent pas être transformés par mon propre logiciel, car ils contiennent de code HTML mal-formaté. Il y a des tags pas fermés, des symboles «>» où ils ne sont pas permis, normalement, et bien-sûr des sauts-de-ligne au milieu des «entities» ou des tags, comme "&éac\nute" et "<di\nv>"; Mais chaque fois que j'adapte mon programme aux bizarreries que je trouve dans mes mails, une autre apparait... quelle galère. Pour que ça marche, il faut écrire des routines qui corrigent le HTML avant de convertir une message en PDF, comme tidy en mode «overwrite».

Constat 1: La transformation des fichiers *.eml en PDF avec un processeur XSL/FO est praticable seulement si on peut exclure d'une manière fiable les parties des mails, qui sont mal-formatés.

Constat 2: J'ai écrit beaucoup de code Ruby et appris des choses, mais pas réussi de créer un système utilisable. Je favorise alors de nouveau
Code: Tout sélectionner
for f in *.eml; do a2ps "$f" -o temp.ps; ps2pdf14 temp.ps `basename $f .eml`.pdf; done

et forcement une installation de Cygwin sous Windows.
:-(

Quand-même pour compléter, j'ajoute la version actuelle du pauvre «CremeFraiche». C'est dans le fichier body.rb où les choses sont difficiles. Le reste semble marcher. Il manquent des traductions dans le fichier «translations», quelques messages sont alors affichés en anglais.
CremeFraiche (zip, 52K)

J'ajoute: Je réfléchis d'écrire mon propre HTML-parser et d'utiliser Prawn directement pour la cŕeation du pdf, c'est à dire sans XSL/FO.
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Sam 21 Jan, 2012 18:51

Crème Fraiche, mon convertisseur EML2PDF: http://www.uplawski.eu/technology/creme ... index.html

Cette fois là, j'ai abandonné l'idée avec la transformation xsl/fo et crée les PDF directement dans le programme. Il n'est plus nécessaire d'appeler des logiciels externes. Quand-même c'est possible de configurer que PDFTK doit joindre des pièces-jointes du mail original au PDF.
Je suis en effet un peu fier des résultats et déteste de voir mes premières contributions dans cette discussion. :?

Crème Fraiche utilise les Ruby-Gems «Mail» et «Prawn».

Le reste sur la page web que je viens de publier. Comme d'habitude, je ne l'ai pas encore traduis en Français.

Maintenant aussi sur Sourceforge: https://sourceforge.net/projects/cremefraiche/

Le même mail qui était traité plus haute avec «a2ps» et «ps2pdf», cette fois là après l'avoir converti avec Crème Fraiche 0.2.3: colibris.eml.pdf
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Sam 30 Mars, 2013 16:39

Crème Fraiche est arrivé à la version 0.5.2 et est maintenant disponible comme «Ruby Gem». C'est à dire à installer avec
Code: Tout sélectionner
~$> gem install cremefraiche

En appelant un des fichiers exécutables (cremfraiche.rb ou cremefraicheGui.rb), le logiciel vérifie la disponibilité d'autres gems dont il dépend, puis essaye d'installer ceux qui manquent (prawn, mail, nokogiri, evtl. gtk2).

Crème Fraiche homepage
«La joie naît de se sentir en harmonie avec la symphonie universelle. Nous sommes d’abord des êtres humains, et je ne veux pas que l’on m’appelle consommateur !» (Pierre Rabhi, Novembre 2010)
versleouest

Avatar de l’utilisateur
Messages : 117
Géo : France, Basse-Normandie, Canton Carrouge

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit