当前位置:  开发笔记 > 前端 > 正文

如何在不支付组件的情况下将HTML转换为.NET中的RTF(RTF)?

如何解决《如何在不支付组件的情况下将HTML转换为.NET中的RTF(RTF)?》经验,为你挑选了3个好方法。

是否有免费的第三方或.NET类将HTML转换为RTF(用于启用富文本格式的Windows窗体控件)?

"免费"要求来自这样一个事实,即我只是在处理原型,只需加载BrowserControl,只需要呈现HTML(即使它很慢),并且Developer Express将发布自己的这样的控制很快.

我不想学习手工编写RTF,而且我已经知道HTML,所以我认为这是快速获得一些可证明代码的最快方法.



1> 小智..:

实际上有一个简单而自由的解决方案:使用你的浏览器,这就是我使用的技巧:

var webBrowser = new WebBrowser();
webBrowser.CreateControl(); // only if needed
webBrowser.DocumentText = *yourhtmlstring*;
while (_webBrowser.DocumentText != *yourhtmlstring*)
    Application.DoEvents();
webBrowser.Document.ExecCommand("SelectAll", false, null);
webBrowser.Document.ExecCommand("Copy", false, null);
*yourRichTextControl*.Paste(); 

这可能比其他方法慢,但至少它是免费的并且有效!


处理等待浏览器控件加载HTML字符串的更好方法可能是使用事件处理程序:`webBrowser.DocumentCompleted + = new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);`

2> Jonathan Par..:

查看有关XHTML2RTF的 CodeProject文章.



3> cjbarth..:

扩展Spartaco的答案,我暗示了以下有效的方法!

    Using reportWebBrowser As New WebBrowser
        reportWebBrowser.CreateControl()
        reportWebBrowser.DocumentText = sbHTMLDoc.ToString
        While reportWebBrowser.DocumentText <> sbHTMLDoc.ToString
            Application.DoEvents()
        End While
        reportWebBrowser.Document.ExecCommand("SelectAll", False, Nothing)
        reportWebBrowser.Document.ExecCommand("Copy", False, Nothing)

        Using reportRichTextBox As New RichTextBox
            reportRichTextBox.Paste()
            reportRichTextBox.SaveFile(DocumentFileName)
        End Using
    End Using

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有