【问题标题】:Convert RTF to and from plain text将 RTF 转换为纯文本和从纯文本转换
【发布时间】:2015-04-28 14:57:14
【问题描述】:

我需要使用 javascript 将纯文本与 RTF(RichText 格式)相互转换。

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

从纯文本转换为 RTF

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

从 RTF 转换为普通格式

同样,样式并不重要。他们可以完成删除。只需要保留所有文本数据(输入数据不会丢失)

【问题讨论】:

    标签: javascript rtf


    【解决方案1】:

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

    【讨论】:

    • here你有一个lazygyu的javascript RTF解析器
    • 如果可以的话,我会给你 100 票,谢谢!
    • 这不适用于 Unicode 输入(非英文字符、印刷引号等)。
    • @mirabilos:是的,我原以为这样的事情会有问题。不幸的是,我对 RTF 格式知之甚少,无法提供更强大的功能
    • rtf.replace(/\\'[0-9a-zA-Z]{2}/g, "").trim();将删除一些不需要的 unicode 字符
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 2014-09-08
      • 2020-08-27
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多