2011-04-28 18 views
9

Jak przekonwertować ciąg znaków RTF na zwykły tekst w Javie? Oczywistą odpowiedzią jest użycie modułu RTFEditorKit Swinga, który wydaje się być powszechną odpowiedzią w Internecie. Jednak metoda zapisu, która twierdzi, że zwraca zwykły tekst, nie jest w rzeczywistości zaimplementowana ... jest mocno zakodowana, aby rzucić wyjątek IOException w Javie6.RTF do zwykłego tekstu w Javie

Odpowiedz

15

używam Swing za RTFEditorKit w Javie 6 tak:

RTFEditorKit rtfParser = new RTFEditorKit(); 
Document document = rtfParser.createDefaultDocument(); 
rtfParser.read(new ByteArrayInputStream(rtfBytes), document, 0); 
String text = document.getText(0, document.getLength()); 

i ów działa.

+0

Gotowy do pracy przy użyciu tego rozwiązania, chociaż na początku też nie działał. Okazuje się, że moje dane wejściowe były nieprawidłowe, a konwersja uległa awarii w trybie cichym i zwróciła pusty ciąg znaków. – edm3

+1

To działa dla mnie, ale z jakiegoś powodu tekst wychodzi z opuszczonymi znakami. –

+0

Działa dobrze na platformie WIndows, ale na platformie * nix ma zależność z serwerem okien X11. – Valijon

0

Możesz uznać RTF Parser Kit jako lekką alternatywę dla Swing RTFEditorKit. Poniższa linia pokazuje ekstrakcję zwykłego tekstu z pliku RTF. Plik RTF jest odczytywany ze strumienia wejściowego, a wyodrębniony tekst jest zapisywany do strumienia wyjściowego.

new StreamTextConverter().convert(new RtfStreamSource(inputStream), outputStream, "UTF-8"); 

(pełne ujawnienie: Jestem autorem RTF Parser Kit)

Powiązane problemy