Convert RTF to and from plain text

musefan picture musefan · Apr 28, 2015 · Viewed 14.5k times · Source

I have a requirement to convert plain text to and from RTF (RichText Format) using javascript.

I am looking for a function for each conversion, and I am not looking to use a library.

Conversion from plain to RTF

The formatting styles and colours are not important, all that matters is that the plain text i converted into a valid RTF format

Conversion from RTF to plain

Again, the styles are not important. They can be completed removed. All that is required is that all text data remains (no loss of entered data)

Answer

musefan picture musefan · Apr 28, 2015

I found a c# answer here which was a good starting point, but I needed a Javascript solution.

There is no guarantee that these are 100% reliable, but they seem to work well with the data I have tested on.

function convertToRtf(plain) {
    plain = plain.replace(/\n/g, "\\par\n");
    return "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang2057{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\n\\viewkind4\\uc1\\pard\\f0\\fs17 " + plain + "\\par\n}";
}

function convertToPlain(rtf) {
    rtf = rtf.replace(/\\par[d]?/g, "");
    return rtf.replace(/\{\*?\\[^{}]+}|[{}]|\\\n?[A-Za-z]+\n?(?:-?\d+)?[ ]?/g, "").trim();
}

Here is a working example of them both in action