Nous avons un rapport Crystal que nous devons envoyer par e-mail, mais le code HTML généré à partir du rapport Crystal est à peu près tout simplement laid et provoque des problèmes avec certains clients de messagerie. Je voulais l'exporter en texte riche et le convertir en HTML si c'est possible.
Aucune suggestion?
Je voudrais vérifier cet outil sur CodeProject RTFConverter. Ce gars donne une grande ventilation de la façon dont le programme fonctionne ainsi que les détails de la conversion.
Mike Stall a posté le code de celui qu'il a écrit en c # ici:
http://blogs.msdn.com/jmstall/archive/2006/10/20/rtf_5F00_html.aspx
Il existe également un exemple sur la galerie d'échantillons de code MSDN appelé Conversion entre RTF et HTML qui vous permet de convertir entre HTML, RTF = et XAML.
Je suis rentré chez moi et j'ai essayé le code ci-dessous et cela ne fonctionne pas. Pour tous ceux qui se demandent, le presse-papiers ne convertit pas simplement comme par magie des choses comme je l'espérais. Au contraire, cela permet à une application de "télécharger" un objet de données avec une variété de formats de collage, puis vous collez (qui dans ma métaphore serait le "téléchargement") dans lequel le programme collé spécifie son format préféré. Personnellement, j'ai fini par utiliser ce code , qui a été recommandé précédemment, et il était extrêmement facile à utiliser et très efficace. Après avoir importé le code (dans VStudio, Project -> Add Existing Files), il vous suffit de passer du html au rtf comme ceci:
return HtmlToRtfConverter.ConvertHtmlToRtf(myRtfString);
ou la direction opposée:
return RtfToHtmlConverter.ConvertHtmlToRtf(myHtmlString);
La plupart des réponses ci-dessus, sinon toutes, fournissent des solutions complètes, souvent basées sur la bibliothèque, au problème en question. Je suis loin de mon ordinateur et ne peux donc pas tester l'idée, mais une méthode alternative, bon marché et vaguement piratée serait la suivante.
private string HTMLFromRtf(string rtfString)
{
Clipboard.SetData(DataFormats.Rtf, rtfString);
return Clipboard.GetData(DataFormats.Html);
}
Encore une fois, je ne sais pas vraiment si cela fonctionnerait, mais je me contente de jouer avec du HTML sur mon iPhone, je pense que ce serait le cas. La documentation est ici . Des explications plus approfondies/docs RE l'obtention et le réglage des modèles de données dans le presse-papiers peuvent être trouvés ici .
(Oui, je suis tout à fait conscient que je suis ici des années plus tard, mais je suppose que cette question est une question à laquelle certaines personnes veulent encore répondre).
Si cela ne vous dérange pas de vous salir les mains, il n'est pas si difficile d'écrire un convertisseur RTF to HTML).
L'écriture d'un convertisseur RTF-> HTML à usage général serait quelque peu compliquée car vous auriez besoin de gérer des centaines de verbes RTF. Cependant, dans votre cas, vous ne traitez qu'avec les verbes utilisés spécifiquement par Crystal Rapports. Je parie que le codage standard RTF généré par Crystal ne varie pas beaucoup d'un rapport à l'autre.
J'ai écrit un convertisseur RTF to HTML en C++, mais il ne traite que de la mise en forme de base comme les polices, les alignements de paragraphes, etc. Mon traducteur supprime essentiellement toute mise en forme spécialisée qu'il n'est pas prêt à traiter avec. Il a fallu environ 400 lignes de C++. Il analyse essentiellement le texte pour les balises RTF et les remplace par des balises HTML équivalentes. RTF balises qui ne sont pas dans ma liste sont simplement supprimés. Une fonction d'expression régulière est vraiment utile lors de l'écriture d'un tel convertisseur.