Bir RTF dizesini C# içindeki bir XAML dizesine dönüştürmenin en etkili yolu nedir? System.Windows.Documents.XamlRtfConverter.ConvertRtfToXaml(string rtfContent)
'u kullanmak istiyorum ama maalesef bu sınıf dahili.RTF dizesini XAML dizesine dönüştürme
5
A
cevap
5
Bir XAML dizesine bir RTF dizesinden gidebilirsiniz ama görüntüleri kaybetmek:
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
:
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);
}
}
}
bir XAML paketine bir RTF dizesinden gitmek zorunda görüntüleri korumak için System.Windows.Documents iç yöntemi XamlRtfConverter çağırmak için System.Reflection kullanın (PresentationFramework.dll başvuru). Parallel.ForEach() 'da bellek çökmeleri olmadan (RichTextBox ile dönüşümün aksine) binlerce dönüşüm için çalışır.
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;
}
İlgili konular
- 1. OData'yı sql dizesine dönüştürme
- 2. Çifti C++ dizesine dönüştürme
- 3. Java'da RTF dizesine UTF-8 dizesi nasıl dönüştürülür?
- 4. Json dizesini DataTable'a dönüştürme
- 5. Tarih dizesini çağa dönüştürme
- 6. Haml dizesini html'ye dönüştürme
- 7. Bir nesneyi XML dizesine dönüştürme
- 8. Json :: Değeri std :: dizesine dönüştürme?
- 9. Onaltılık dize java dizesine dönüştürme
- 10. CFStringRef'i bir C dizesine dönüştürme?
- 11. Bir utf-8 dizgisini PHP'de utf-16 dizesine dönüştürme
- 12. Bir diziyi ayrı bir argüman dizesine dönüştürme
- 13. MySQL kaydını PHP'de JSON dizesine dönüştürme
- 14. Yeni satır karakterini "\ n" dizesine dönüştürme
- 15. Bir char dizesini bir wchar_t dizesine nasıl dönüştürebilirim?
- 16. FlowDocument, rtf'ye dönüştürme
- 17. Bir JSON dizesini java'daki özel nesnelere dönüştürme
- 18. Javascript'te zaman aşımına UTC dizesini dönüştürme
- 19. 1s ve 0s dizesini ikili değere dönüştürme
- 20. JSON dizesini veritabanından PHP dizi sorunlarına dönüştürme
- 21. JSON dizesini Scala'daki bir JSON nesnesine dönüştürme
- 22. Dizede ASCII olmayan karakterler olduğunda bir C dizesini (karakter dizisi) bir Python dizesine dönüştürme işlemi nasıl yapılır?
- 23. TextView içinde .rtf dosyası nasıl görüntülenir?
- 24. Bir kullanıcı adı C# /. NET'e SID dizesine dönüştürme
- 25. Altı kodlu bir dizeyi Perl'deki bayt dizesine dönüştürme nasıl yapılır?
- 26. amqp_cstring_bytes öğesinin C dizesine dönüştürülmesi
- 27. XAML
- 28. XAML
- 29. XAML
- 30. XAML
'Xaml dizesi nedir? –
@MehdiKhademloo [tag wiki] 'yi okuyun (http://stackoverflow.com/tags/xaml/info) –
Bunu biliyorum, Ama '' RTAM dizesi' ile ilgili 'XAML dizesi' bana garip geliyor ... –