数据格式中无法识别的结构 '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
- 此处有两个撇号,而本应只有一个。
\'hh
A hexadecimal value, based on the specified character set (may be used to identify 8-bit values).
我想将 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
- 此处有两个撇号,而本应只有一个。
\'hh
A hexadecimal value, based on the specified character set (may be used to identify 8-bit values).