Get plain text from an RTF text
Asked Answered
R

3

20

I have on my database a column that holds text in RTF format.

How can I get only the plain text of it, using C#?

Thanks :D

Ramunni answered 27/2, 2009 at 17:58 Comment(1)
Here's another question that discusses the regex way.Bosket
I
34

Microsoft provides an example where they basically stick the rtf text in a RichTextBox and then read the .Text property... it feels somewhat kludgy, but it works.

static public string ConvertToText(string rtf)
{
   using(RichTextBox rtb = new RichTextBox())
   {
       rtb.Rtf = rtf;
       return rtb.Text;
   }
}
Imbecilic answered 27/2, 2009 at 18:0 Comment(4)
This always annoyed me. Plus, you have to do this in a STA thread, which usually messes with most program's threading model.Eventuate
Having looked at the underlying RichTextBox code... yeah, you're going to want to use it because it's a complex beast.Dowzall
i have had issues with this creating a memory leak. Even tho the RichTextBox rtb goes out of scope immediately it appears to add to the USER OBJECTs count and never decrement. thus I think it best to wrap it in a using statement.Shortwinded
Please note that if your RTF inclucludes headers and footers, that text won't be captured by RichTextBox component.Validity
A
1

for WPF you can use (using Xceed WPF Toolkit) this extension method :

public static string RTFToPlainText(this string s)
    {
       // for information : default Xceed.Wpf.Toolkit.RichTextBox formatter is RtfFormatter 
        Xceed.Wpf.Toolkit.RichTextBox rtBox = new Xceed.Wpf.Toolkit.RichTextBox(new System.Windows.Documents.FlowDocument());
        rtBox.Text = s;
        rtBox.TextFormatter = new Xceed.Wpf.Toolkit.PlainTextFormatter();
        return rtBox.Text;

    }
Apc answered 6/5, 2018 at 9:59 Comment(0)
D
0

If you want a pure code version, you can parse the rtf yourself and keep only the text bits. It's a bit of work, but not very difficult work - RTF files have a very simple syntax. Read about it in the RTF spec.

Dereliction answered 27/2, 2009 at 18:3 Comment(1)
yeah, until you get to tables with columns :) But simple bold/italic formatting is easy.Palatalized

© 2022 - 2024 — McMap. All rights reserved.