You can go from the RTF line to the XAML line, but you are losing images:
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); } } }
To save the images, you must go from the RTF line to the XAML package:
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); } }
Robin source share