Convert RTF to and from plain text

情到浓时终转凉″ 提交于 2019-12-17 20:34:26

问题


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)


回答1:


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




回答2:


Adding onto Musefan's answer for some hex characters

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


来源:https://stackoverflow.com/questions/29922771/convert-rtf-to-and-from-plain-text

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!