RTF для простого текста в Java - PullRequest
10 голосов
/ 29 апреля 2011

Как преобразовать строку RTF в простой текст в Java? Очевидный ответ - использовать RTFEditorKit от Swing, и это, кажется, распространенный ответ в Интернете. Однако метод write, который утверждает, что возвращает простой текст, на самом деле не реализован ... он жестко запрограммирован, чтобы просто генерировать IOException в Java6.

Ответы [ 4 ]

15 голосов
/ 29 апреля 2011

Я использую RTFEditorKit Swing в Java 6 следующим образом:

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

и все работает.

5 голосов
/ 29 апреля 2011
1 голос
/ 13 января 2017

Вы можете рассмотреть RTF Parser Kit в качестве легкой альтернативы Swing RTFEditorKit. Строка ниже показывает извлечение простого текста из файла RTF. RTF-файл считывается из входного потока, извлеченный текст записывается в выходной поток.

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

(полное раскрытие: я автор RTF Parser Kit)

0 голосов
/ 29 июня 2018

Вот полный код для анализа и записи RTF в виде простого текста

    import java.io.FileInputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.Document;
    import javax.swing.text.rtf.RTFEditorKit;

    public class rtfToJson {
    public static void main(String[] args)throws IOException, BadLocationException {
    // TODO Auto-generated method stub
    RTFEditorKit rtf = new RTFEditorKit();
    Document doc = rtf.createDefaultDocument();

    FileInputStream fis = new FileInputStream("C:\\SampleINCData.rtf");
    InputStreamReader i =new InputStreamReader(fis,"UTF-8");
    rtf.read(i,doc,0);
   // System.out.println(doc.getText(0,doc.getLength()));
    String doc1 = doc.getText(0,doc.getLength());


    try{    
           FileWriter fw=new FileWriter("B:\\Sample INC Data.txt");    
           fw.write(doc1);    
           fw.close();    
          }catch(Exception e)
    {
              System.out.println(e);
              }    
          System.out.println("Success...");    
     }    

    }
...