将 RTF 与纯文本相互转换

Convert RTF to and from plain text

我需要使用 javascript.

将纯文本与 RTF(富文本格式)相互转换

我正在为每次转换寻找一个函数,而不是使用库。

从纯文本到 RTF 的转换

格式样式和颜色并不重要,重要的是我将纯文本转换为有效 RTF格式

从 RTF 格式转换为普通格式

同样,风格并不重要。它们可以被完全移除。所需要的只是 所有 文本数据保留(输入数据不丢失)

found a c# answer here 这是一个很好的起点,但我需要一个 Javascript 解决方案。

不能保证这些都是 100% 可靠的,但它们似乎适用于我测试过的数据。

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 他们都在行动

添加到 Musefan 的一些十六进制字符的答案中

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();
}