Java中的RTF到纯文本

Java中的RTF到纯文本,java,rtf,Java,Rtf,如何在Java中将RTF字符串转换为纯文本?显而易见的答案是使用Swing的RTFEditorKit,这似乎是互联网上常见的答案。然而,声称返回纯文本的write方法实际上并没有实现。。。在Java6中抛出IOException是硬编码的。试试ApacheTika:我在Java6中使用Swing的RTFEditorKit,如下所示: RTFEditorKit rtfParser = new RTFEditorKit(); Document document = rtfParser.createD

如何在Java中将RTF字符串转换为纯文本?显而易见的答案是使用Swing的RTFEditorKit,这似乎是互联网上常见的答案。然而,声称返回纯文本的write方法实际上并没有实现。。。在Java6中抛出IOException是硬编码的。

试试ApacheTika:

我在Java6中使用Swing的RTFEditorKit,如下所示:

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

这是工作。

您可以考虑作为Swing RTFIDITORKIT的轻量级替代方案。下一行显示从RTF文件中提取的纯文本。RTF文件从输入流读取,提取的文本写入输出流

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

(完全公开:我是RTF解析器工具包的作者)

以下是将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...");    
     }    

    }

使用此解决方案使其工作,尽管起初也不工作。结果表明,我的输入数据无效,转换失败,并返回一个空字符串。这对我来说是可行的,但出于某种原因,文本中出现的字符会被删除。它在WIndows平台上运行良好,但对于*nix平台,它依赖于X11窗口服务器。Tika在后端使用“RTFEditorKit”Tika仅用于纯文本和元数据,对吗?