49 votes

Convertir Rtf en HTML

Nous avons un rapport Crystal que nous devons envoyer par e-mail, mais le HTML généré à partir du rapport Crystal est plutôt laid et pose des problèmes avec certains clients e-mail. Je voulais l'exporter en tant que texte riche et le convertir en HTML si c'est possible.

Des suggestions ?

1 votes

Envoyer un fichier PDF n'est pas une solution ?

1 votes

Non, nous envoyons d'autres documents en pièces jointes au format PDF, mais nous voulons que l'e-mail ait un corps. La partie pour laquelle j'ai besoin du HTML est le corps.

0 votes

Je ne peux pas répondre puisque ce sujet est classé hors-sujet, mais merci à GNU je recommande d'utiliser UnRTF . brew install unrtf alors unrtf --html input.rtf > output.html .

31voto

Richard R Points 481

Je vérifierais cet outil sur CodeProject RTFConverter. Cet homme explique en détail le fonctionnement du programme ainsi que les détails de la conversion.

Écrire votre propre convertisseur RTF

0 votes

Merci beaucoup. C'était utile. J'espère que cela va résoudre les problèmes que nous avions. Il vient de réapparaître aujourd'hui, un timing parfait :-)

0 votes

Lorsque vous téléchargez le code, assurez-vous que tous les projets sont en .NET 4.

7voto

rizzle Points 3127

Mike Stall a posté le code d'une de ces applications qu'il a écrite en c# ici :

http://blogs.msdn.com/jmstall/archive/2006/10/20/rtf_5F00_html.aspx

0 votes

Celui-là a presque marché. J'aurais pu ajouter les choses dont j'avais besoin, mais ça n'en valait pas la peine.

0 votes

Oui, il était si près du but - mais je pense que les spécifications RTF ont pu changer depuis qu'il l'a écrit... donc mon texte a été altéré. Quel dommage !

7voto

Matthew Manela Points 9610

Il y a également un échantillon sur la galerie MSDN Code Samples appelé Conversion entre RTF et HTML qui vous permet de convertir entre HTML, RTF et XAML.

0 votes

J'ai essayé, ça marche bien mais il y a un problème avec les espaces en début de ligne : dans ce cas, il laisse simplement " " au lieu de le convertir en esperluette + nbsp ; ou d'ajouter une balise void SPAN . Ainsi, le code html résultant n'a pas d'espace en début de ligne du tout.

0 votes

Cela a bien fonctionné, mais j'ai remarqué qu'il manque la valeur des unités (px) de la propriété CSS margin lors de la conversion de Xaml en HTML (dans le cadre du processus RTF vers HTML). Correction simple dans la méthode ParseXamlThickness(string thickness) il suffit d'ajouter '+ "px"'' (pas de guillemets simples) à chacune des propriétés de marge CSS. (sans guillemets simples) à chacune des valeurs de retour dans l'instruction switch.

1voto

Kluge Points 2144

Si vous n'avez pas peur de vous salir les mains, il n'est pas si difficile d'écrire un convertisseur RTF vers HTML.

L'écriture d'un convertisseur RTF->HTML à usage général serait quelque peu compliquée car il faudrait traiter des centaines de verbes RTF. Cependant, dans votre cas, vous ne traitez que les verbes utilisés spécifiquement par Crystal Reports. Je parie que le codage RTF standard généré par Crystal ne varie pas beaucoup d'un rapport à l'autre.

J'ai écrit un convertisseur RTF vers HTML en C++, mais il ne traite que le formatage de base comme les polices, l'alignement des paragraphes, etc. Mon traducteur supprime tout formatage spécialisé qu'il n'est pas préparé à traiter. Il a fallu environ 400 lignes de C++. Il analyse le texte à la recherche de balises RTF et les remplace par des balises HTML équivalentes. Les balises RTF qui ne figurent pas dans ma liste sont simplement supprimées. Une fonction regex est vraiment utile pour écrire un tel convertisseur.

0 votes

Pourquoi s'embêter à convertir de RTF->HMTL s'il convertit déjà Report->HTML ? Il devrait se passer complètement de RTF car il n'en a pas besoin.

-3voto

Andrew Hare Points 159332

Je ne connais pas de bibliothèque permettant de faire cela (mais je suis sûr qu'il y en a beaucoup qui le peuvent) mais si vous pouvez déjà créer du HTML à partir du rapport Crystal, pourquoi ne pas utiliser XSLT pour nettoyer le balisage ?

0 votes

XSLT sert à transformer le XML, pas le HTML.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X