将RTF字符串转换为XAML字符串

Rob*_*bin 5 c# xaml rtf

在C#中将RTF字符串转换为XAML字符串的最有效方法是什么?我想使用,System.Windows.Documents.XamlRtfConverter.ConvertRtfToXaml(string rtfContent)但不幸的是,这个课程是内部的.

Rob*_*bin 5

您可以从RTF字符串转到XAML字符串,但丢失图像:

 var rtf = File.ReadAllText(rtfFileName);
 var doc = new FlowDocument();
 var range = new TextRange(doc.ContentStart, doc.ContentEnd);
 using (var inputStream = new MemoryStream(Encoding.ASCII.GetBytes(rtf)))
 {
    range.Load(inputStream, DataFormats.Rtf);
    using (var outputStream = new MemoryStream())
    {
       range.Save(outputStream, DataFormats.Xaml);
       outputStream.Position = 0;
       using (var xamlStream = new StreamReader(outputStream))
       {
          var xaml = xamlStream.ReadToEnd();
          File.WriteAllText(xamlFileName, xaml);
       }
    }
 }
Run Code Online (Sandbox Code Playgroud)

要保留图像,您必须从RTF字符串转到XAML包:

 var rtf = File.ReadAllText(rtfFileName);
 var doc = new FlowDocument();
 var range = new TextRange(doc.ContentStart, doc.ContentEnd);
 using (var inputStream = new MemoryStream(Encoding.ASCII.GetBytes(rtf)))
 {
    range.Load(inputStream, DataFormats.Rtf);
    using (var outputStream = new FileStream(xamlFileName, FileMode.Create))
    {
       range.Save(outputStream, DataFormats.XamlPackage);
    }
 }
Run Code Online (Sandbox Code Playgroud)