在.NET中将RTF转换为HTML

5

我已经成功使用 WebBrowserRichTextBox 做到了相反的操作。

但是,我如何将 RTF 转换为 HTML?

4个回答

15
如果您在 NuGet 上弹出并搜索“RTF”,那么目前最受欢迎的结果看起来像是 RtfPipe;您可以直接在此安装,或通过包管理器控制台安装:
Install-Package RtfPipe

然后在你的C#代码中,你可以非常容易地将RTF转换为HTML:

var html = RtfPipe.Rtf.ToHtml(rtf);

根据他们的GitHub页面上的readme.md文件:
该库试图支持RTF规范1.9.1中记录的核心RTF功能。这些功能包括:
- 字符格式(粗体、斜体、颜色等) - 表格(包括嵌套表格) - 列表 - 超链接 - 图片 - 标题级别 - HTML封装(例如Outlook执行的操作)
话虽如此,在处理非平凡文档的众多情况下,与其他RTF阅读器(如MS Word)相比,该库将无法产生“正确”的视觉表示。
我将我的RTF导入其中,它运行得非常好。结果因人而异。

这太棒了。它完美地运行了。 - Ola_leke

1

声明:我在这家公司工作。

我看到这个问题很久了,但也许有人正在寻找解决方案。我们的 RTF to HTML 组件可以将 RTF 转换为 HTML。您可以下载组件或尝试在线演示。如果您有疑问,请先尝试试用版。:) 试用版是免费的。

以下是在 ASP.NET 中从 RTF 转换为 HTML 的代码示例:

    SautinSoft.RtfToHtml r = new SautinSoft.RtfToHtml();
    r.OutputFormat = SautinSoft.RtfToHtml.eOutputFormat.HTML_401;
    r.ImageStyle.IncludeImageInHtml = false; //To save images inside HTML as binary data specify this property to 'true'

    r.ImageStyle.ImageFolder = Server.MapPath(""); 
    r.ImageStyle.ImageSubFolder = "images";
    r.ImageStyle.ImageFileName = "picture";       

    string rtf = ".....";
    string html = r.ConvertString(rtf);        

    //show HTML
    if (html.Length>0)
    {
        Response.Buffer = true;
        Response.Clear();
        Response.ContentType = "text/html";
        Response.Write(html);
        Response.Flush();
        Response.End();
    }

我使用您的代码成功地将RTF转换为HTML,但是当我将HTML内容加载到TinyMCE编辑器中并更新它们时,它只保存纯文本。它失去了样式,请帮忙解决。 - ShaileshDev
1
实际上,@BrainSlugs83的答案应该被接受,因为这个答案推广了付费工具,而BrainSlugs83提供的解决方案是免费的,并且它有效。 - Kruno MONO

0
唯一的问题是当你在预算内工作时,额外的成本意味着更低的利润,所以我开始开发自己的版本。主要问题是目前它只支持粗体斜体,以及某些实体(&amp、&copy、&reg、&trade、&euro 和 &###),缺乏字体和颜色支持,但它仍然是一个正在进行中的项目。我正在添加字体和颜色,但我的头疼之处在于这些可能来自样式表而不是老式的 HTML 标签。
我正在使用 VB.NET 编写此代码,并已在 CodeProject 上发布了启动代码。 启动代码

你能否在回答中添加足够的使用概要细节,以便其他人可以立即理解并掌握它,而不仅仅是简短的介绍? - Flexo

-1

1
将标记转换为自己并不是直接的。不知道如何将C++库转换为.NET。(它不是DLL文件) - IAmGroot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接