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

C# WinForms中如何将API返回的HTML转为RichTextBox可显示文本

解决方案:将Bionic Reading API的HTML响应转换为文本/带格式内容显示在RichTextBox

现有代码的问题

你的ConvertHtmlToRtf方法逻辑有误:RichTextBox无法直接解析HTML内容,当你把HTML赋值给txtnote.Text时,控件只会显示原始的HTML文本,再将其保存为RTF也只是把HTML文本转成了RTF格式,并没有解析HTML的格式。另外,请求参数里的content={0}.多了一个多余的点,且未对输入文本做URL编码,可能导致请求参数异常。


方案1:转为纯文本(无格式)

如果不需要保留Bionic Reading的加粗效果,仅提取纯文本,推荐使用HtmlAgilityPack(比正则更可靠):

  1. 安装NuGet包HtmlAgilityPack
  2. 修改成功响应后的代码:
using HtmlAgilityPack;

if (response.IsSuccessful)
{
    // 解析HTML文档
    var htmlDoc = new HtmlDocument();
    htmlDoc.LoadHtml(response.Content);
    // 提取纯文本
    string plainText = htmlDoc.DocumentNode.InnerText;
    txtnote.Text = plainText;
}

备选:正则表达式(简单但可能处理不彻底)

using System.Text.RegularExpressions;

if (response.IsSuccessful)
{
    // 移除所有HTML标签
    string plainText = Regex.Replace(response.Content, "<.*?>", string.Empty);
    txtnote.Text = plainText;
}

方案2:转为带格式的RTF(保留Bionic加粗效果)

你已经安装了TheArtOfDev.HtmlRenderer.WinForms,这个库可以直接将HTML渲染到RichTextBox或转为RTF,步骤如下:

  1. 确保代码引用命名空间:
using TheArtOfDev.HtmlRenderer.WinForms;
  1. 修改成功响应后的代码(二选一):
  • 直接渲染到RichTextBox(最简单):
if (response.IsSuccessful)
{
    HtmlRender.RenderTo(txtnote, response.Content);
}
  • 先转为RTF再赋值(适合需要保存RTF内容的场景):
if (response.IsSuccessful)
{
    string rtfContent = HtmlRender.ConvertHtmlToRtf(response.Content);
    txtnote.Rtf = rtfContent;
}

额外优化:修复请求参数

请求中的content参数需要做URL编码,避免特殊字符(如空格、&等)导致请求失败,同时移除多余的点:

// 替换原有的content赋值代码
string content = $"content={Uri.EscapeDataString(txtnote.Text)}&response_type=html&request_type=html&fixation=1&saccade=10";

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:37:30