You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.net中将Rich Text富文本转换为HTML文本格式

RTF富文本转HTML的VB.NET实现方案

方案1:使用System.Windows.Forms.RichTextBox原生实现(无第三方依赖)

该方案基于.NET 自带的富文本控件实现,不需要安装额外NuGet包,仅适合低并发、Windows服务器部署的场景:

  • 首先在项目的引用列表中添加System.Windows.Forms程序集引用
  • 后台编写转换方法如下:
Imports System.Windows.Forms
Imports System.IO
Imports System.Text

Public Function RtfToHtml(rtfContent As String) As String
    ' 后台实例化控件,无需挂载到UI线程
    Using rtb As New RichTextBox() With {.Rtf = rtfContent}
        rtb.SelectAll()
        ' 复制富文本内容为HTML格式到系统剪贴板
        rtb.Copy()
        ' 读取剪贴板中的HTML数据
        Dim rawHtml As String = Clipboard.GetText(TextDataFormat.Html)
        
        If String.IsNullOrEmpty(rawHtml) Then Return String.Empty
        
        ' 裁剪剪贴板HTML自带的头部标识,提取有效内容
        Const startTag As String = "<!--StartFragment-->"
        Const endTag As String = "<!--EndFragment-->"
        Dim startIndex As Integer = rawHtml.IndexOf(startTag) + startTag.Length
        Dim endIndex As Integer = rawHtml.IndexOf(endTag)
        
        If startIndex > 0 AndAlso endIndex > startIndex Then
            Return rawHtml.Substring(startIndex, endIndex - startIndex)
        End If
        Return rawHtml
    End Using
End Function

注意:该方案依赖系统剪贴板,高并发场景会出现内容串扰,且仅支持Windows环境部署,跨平台、高并发Web项目请勿使用

方案2:使用RtfPipe库实现(推荐,适配Web生产环境)

该方案使用专门的RTF处理库实现,兼容性好、性能稳定,适合生产环境使用:

  • 首先在NuGet包管理器中搜索安装RtfPipe包
  • 转换代码仅需一行即可完成:
Imports RtfPipe
Imports System.Text

Public Function RtfToHtml(rtfContent As String) As String
    ' 直接转换RTF为纯净HTML,无多余前缀内容
    Return Rtf.ToHtml(rtfContent)
End Function

优点:不依赖Windows系统组件,支持跨平台部署,高并发场景无串扰问题,转换后的HTML样式还原度更高

常见问题处理

  • 读取RTF文件时出现中文乱码,可指定编码读取:
Dim rtfContent As String = File.ReadAllText("你的RTF文件路径.rtf", Encoding.GetEncoding("GB2312"))
  • 需要自定义转换后的HTML样式,可以传入RtfPipe的配置参数,覆盖默认的样式映射规则
  • 转换完成的HTML可以直接输出到前端页面,或者存入数据库持久化存储

内容的提问来源于stack exchange,提问作者PHUPHA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:54:08