c# - 将 RTF 字符串转换为 XAML 字符串

标签 c# xaml rtf

在 C# 中将 RTF 字符串转换为 XAML 字符串的最有效方法是什么?我想使用 System.Windows.Documents.XamlRtfConverter.ConvertRtfToXaml(string rtfContent) 但遗憾的是该类是内部类。

最佳答案

您可以从 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);
       }
    }
 }

要保存图像,您必须从 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);
    }
 }

关于c# - 将 RTF 字符串转换为 XAML 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26123907/

相关文章:

c# - .NET - 自定义类型可能吗?

c# - 如何更有效地在RichTextBox中加载图片?

wpf - 这个绑定(bind)有什么问题?

.net - RichTextBox (.NET Winforms) 问题(或替代方案)

c# - 使用 IDbConnection/IDbTransaction 安全吗?

c# - 什么决定一个字段是否在 ViewData.ModelState 字典中?

c# - 在 ASP.NET 中,维护跨回发动态生成的控件的好策略是什么?

c# - Entity Framework 不将数据保存到 WPF 中的数据库

java - Java 中用于比较两个 RTF 文件的开源 API

emacs - 使用当前字体锁定从 Emacs 导出 rtf?