Have you ever had the
desire to convert some RTF text into HTML? Probably not. But if you do, then
you are in luck! I recently had the need to do this conversion and after some
searching found out a way to do it by enhancing a sample distributed in the
MSDN library. The sample is called:XAML to HTML Conversion Demo.
The sample has code which
converts HTML to and from a XAML Flow Document. But this doesn’t make
things easier until you realize that there is a way to convert RTF to XAML
easily. The key is to use System.Windows.Controls.RichTextBox which can load RTF from a stream and save it as XAML. This
conversion is shown below:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
private static string ConvertRtfToXaml(string rtfText)
{
var
richTextBox = new RichTextBox();
if (string.IsNullOrEmpty(rtfText))
return "";
var
textRange = new TextRange(richTextBox.Document.ContentStart,
richTextBox.Document.ContentEnd);
using (var
rtfMemoryStream = new MemoryStream())
{
using (var
rtfStreamWriter = new StreamWriter(rtfMemoryStream))
{
rtfStreamWriter.Write(rtfText);
rtfStreamWriter.Flush();
rtfMemoryStream.Seek(0,
SeekOrigin.Begin);
textRange.Load(rtfMemoryStream,
DataFormats.Rtf);
}
}
using (var
rtfMemoryStream = new MemoryStream())
{
textRange
= new TextRange(richTextBox.Document.ContentStart,
richTextBox.Document.ContentEnd);
textRange.Save(rtfMemoryStream,
DataFormats.Xaml);
rtfMemoryStream.Seek(0,
SeekOrigin.Begin);
using (var
rtfStreamReader = new StreamReader(rtfMemoryStream))
{
return rtfStreamReader.ReadToEnd();
}
}
}
|