数据格式中无法识别的结构 'Rich Text Format'

Unrecognized structure in data format 'Rich Text Format'

我想将 RTF 转换为 HTML。但是我在 TextRange.Load 函数中遇到错误。我有以下代码:

private static string ConvertRtfToXaml(string rtfText)
    {
        var richTextBox = new System.Windows.Controls.RichTextBox();
        if (string.IsNullOrEmpty(rtfText)) return "";

        var textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);

        //Create a MemoryStream of the Rtf content

        using (var rtfMemoryStream = new MemoryStream())
        {
            using (var rtfStreamWriter = new StreamWriter(rtfMemoryStream))
            {
                rtfStreamWriter.Write(rtfText);
                rtfStreamWriter.Flush();
                rtfMemoryStream.Seek(0, SeekOrigin.Begin);

                //Load the MemoryStream into TextRange ranging from start to end of RichTextBox.
                textRange.Load(rtfMemoryStream, System.Windows.Forms.DataFormats.Rtf);
            }
        }

        using (var rtfMemoryStream = new MemoryStream())
        {

            textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
            textRange.Save(rtfMemoryStream, System.Windows.DataFormats.Xaml);
            rtfMemoryStream.Seek(0, SeekOrigin.Begin);
            using (var rtfStreamReader = new StreamReader(rtfMemoryStream))
            {
                return rtfStreamReader.ReadToEnd();
            }
        }

    }

函数 textRange.Load(rtfMemoryStream, System.Windows.Forms.DataFormats.Rtf); 抛出以下错误:

Unrecognized structure in data format 'Rich Text Format'. Parameter name: stream

我的 RTF 字符串如下所示:

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0Arial;}}\viewkind4\uc1\pard\fs20 Hallo\par
\par
Wir bitten um Auftragsbest\''e4tigung und Liefertermin\fs20\par
}

RTF 字符串在我看来很正常,参数流在哪里?

你打错了escape/unescape:

\''

改为

\'

TextRange.Load 应该是:

textRange.Load(rtfMemoryStream, System.Windows.DataFormats.Rtf);

在程序集 PresentationCore 中定义了 System.Windows.DataFormats.Rtf

RTF 无效,因为它包含 \''e4 - 此处有两个撇号,而本应只有一个。

RTF Special Characters

\'hh A hexadecimal value, based on the specified character set (may be used to identify 8-bit values).