RTF to Plain Text in Java

前端 未结 4 1076
南方客
南方客 2020-11-30 15:07

How do you convert an RTF string to plain text in Java? The obvious answer is to use Swing\'s RTFEditorKit, and that seems to be the common answer around the Internet. How

相关标签:
4条回答
  • 2020-11-30 15:31

    You might consider RTF Parser Kit as a lightweight alternative to the Swing RTFEditorKit. The line below shows plain text extraction from an RTF file. The RTF file is read from the input stream, the extracted text is written to the output stream.

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

    (full disclosure: I'm the author of RTF Parser Kit)

    0 讨论(0)
  • 2020-11-30 15:36

    Try Apache Tika: http://tika.apache.org/0.9/formats.html#Rich_Text_Format

    0 讨论(0)
  • 2020-11-30 15:37

    I use Swing's RTFEditorKit in Java 6 like this:

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

    and thats working.

    0 讨论(0)
  • 2020-11-30 15:41

    Here is the full code to parse & write RTF as a plain text

        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...");    
         }    
    
        }
    
    0 讨论(0)
提交回复
热议问题