Преобразование RTF в обычный текст и из него
У меня есть требование конвертировать обычный текст в RTF (формат RichText) и из него с помощью javascript.
Я ищу функцию для каждого преобразования, и я не хотите использовать библиотеку.
преобразование из простого в RTF
стили форматирования и цвета не важны, все, что имеет значение, это то, что простой текст, который я преобразовал в действительный формат RTF
преобразование из RTF в равнина
опять же, не важно. Они могут быть завершены удалены. Все, что требуется, заключается в том, что все текстовые данные остаются (без потери введенных данных)
2 ответов
Я нашел ответ на C# здесь что было хорошей отправной точкой, но мне нужно было решение 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();
}
вот рабочий пример из них обоих в действии
добавление в ответ 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();
}