using System.Windows.Forms; using System.Text.RegularExpressions; using System.Web; using System.Drawing; using System; using System.Linq; namespace wispro.sp.winClient { public class HtmlToRtfConverter { public string ConvertHtmlToRtf(string html) { try { using (RichTextBox rtBox = new RichTextBox()) { string decodedHtml = HttpUtility.HtmlDecode(html); ProcessHtmlContent(rtBox, decodedHtml); return rtBox.Rtf; } } catch (Exception ex) { throw new Exception($"HTML转RTF时发生错误: {ex.Message}"); } } private void ProcessHtmlContent(RichTextBox rtBox, string html) { // 首先处理段落 var paragraphs = Regex.Split(html, @"") .Where(p => !string.IsNullOrWhiteSpace(p)); foreach (var paragraph in paragraphs) { // 处理段落内的内联元素 ProcessInlineElements(rtBox, paragraph); // 在段落后添加换行 if (!rtBox.Text.EndsWith(Environment.NewLine)) { rtBox.AppendText(Environment.NewLine); } } } private void ProcessInlineElements(RichTextBox rtBox, string html) { // 匹配内联元素,包括strike、u标签和br标签 string pattern = @"<(?strike|u)[^>]*style=['""](?