将RTF字符串转换为C#中的XAML字符串的最有效方法是什么?我想使用System.Windows.Documents.XamlRtfConverter.ConvertRtfToXaml(string rtfContent)
,但不幸的是,课程是内部的。将RTF字符串转换为XAML字符串
5
A
回答
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);
}
}
}
要保留您从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);
}
}
1
使用System.Reflection在System.Windows.Documents中调用内部方法XamlRtfConverter(需要参考PresentationFramework.dll)。 它可以在Parallel.ForEach()中进行数千次转换,而不会发生内存崩溃(与通过RichTextBox进行转换相反)。
private static string ConvertRtfToXaml(string rtfContent)
{
var assembly = Assembly.GetAssembly(typeof(System.Windows.FrameworkElement));
var xamlRtfConverterType = assembly.GetType("System.Windows.Documents.XamlRtfConverter");
var xamlRtfConverter = Activator.CreateInstance(xamlRtfConverterType, true);
var convertRtfToXaml = xamlRtfConverterType.GetMethod("ConvertRtfToXaml", BindingFlags.Instance | BindingFlags.NonPublic);
var xamlContent = (string)convertRtfToXaml.Invoke(xamlRtfConverter, new object[] { rtfContent });
return xamlContent;
}
相关问题
- 1. 将字符串转换为字符串
- 2. 将RTF字符串中的unicode字符转换为纯文本
- 3. 如何将UTF-8字符串转换为java中的RTF字符串?
- 4. 将字符串转换为字符
- 5. 将字符串转换为字符
- 6. 将字符串转换为字符
- 7. 将char字符串转换为字符
- 8. Java - 将字符串转换为字符[]
- 9. InfixToPostfix将字符转换为字符串
- 10. 将字符串转换为
- 11. 将字符串转换为“_”
- 12. 将字符串转换为?
- 13. 如何将字符串的字符串转换为字符?
- 14. JQuery.each将字符串文字转换为字符串。为什么?
- 15. 将字符串转换为字符串后无法反转字符串Array
- 16. 将字符串替换为字符串
- 17. 转换数字字符串转换为字符串
- 18. 将字符串语句转换为切换字符串语句
- 19. C#将字节数组与字符串转换为字符串
- 20. 将字节字符串转换为python中的字符串
- 21. 将字典<字符串,字符串>转换为数组
- 22. 如何将字符串文字转换为字符串值
- 23. 将字符串转换为字节字符串
- 24. 如何将JTextField转换为字符串和字符串为JTextField?
- 25. 将HexNumber作为字符串转换为字符串
- 26. 将JavaScript符号转换为字符串?
- 27. 将字符串转换为运算符
- 28. 如何将rtf字符串转换为C#中的文本
- 29. 将字符串转换为数字node.js
- 30. Knockout.js将数字转换为字符串
什么是Xaml字符串? – 2014-09-30 15:04:12
@MehdiKhademloo阅读[标签维基](http://stackoverflow.com/tags/xaml/info) – 2014-09-30 15:19:48
我知道,但'RTF字符串'相关的'XAML字符串是奇怪的... – 2014-09-30 15:28:21