2015-04-28 19 views
6

Mam wymóg konwersji zwykłego tekstu na format RTF (RichText Format) przy użyciu javascript.Konwertuj RTF na i ze zwykłego tekstu

Szukam funkcji dla każdej konwersji i nie chcę korzystać z biblioteki.

Konwersja gładki RTF

stylów formatowania i kolory nie są ważne, że wszystkie sprawy jest to, że zwykły tekst i przekształcić w ważny formacie RTF

konwersja z formatu RTF do plain

Znowu style nie są ważne. Mogą one zostać usunięte usunięte. Wymagane jest tylko, aby dane tekstowe pozostały (bez utraty wprowadzonych danych)

Odpowiedz

9

I found a c# answer here co było dobrym początkiem, ale potrzebowałem rozwiązania Javascript.

Nie ma gwarancji, że są one w 100% niezawodne, ale wydają się działać dobrze z danymi, które przetestowałem.

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 z nich zarówno w działaniu

+0

lub [tutaj] (https://github.com/lazygyu/RTF-parser) masz javascriptowy parser RTF autorstwa lazygyu – Kaiido

+0

Dałbym ci 100 przegranych za to, gdybym mógł, dziękuję! – user3897392

+0

To nie zadziała dobrze dla danych wejściowych Unicode (znaki inne niż angielskie, znaki cudzysłowu itp.). – mirabilos

0

Dodanie na odpowiedź Musefan dla niektórych znaków hex

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(); 
} 
Powiązane problemy