Java 从 RTF 获取纯文本

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11866935/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 06:43:32  来源:igfitidea点击:

Java get plain Text from RTF

javartf

提问by Programmer

I have on my database a column that holds text in RTF format. How can I get only the plain text of it, using Java?

我的数据库中有一个包含 RTF 格式文本的列。如何使用 Java 仅获取它的纯文本?

回答by Ben Arnao

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

this should work

这应该有效

回答by Jens S.

This works if the RTF text is in a JEditorPane

如果 RTF 文本位于 JEditorPane 中,则此方法有效

String s = getPlainText(aJEditorPane.getDocument());

String getPlainText(Document doc) {
    try {
        return doc.getText(0, doc.getLength());
    }
    catch (BadLocationException ex) {
        System.err.println(ex);
        return null;
    }
}

回答by Lemon Juice

If you can try "AdvancedRTFEditorKit", it might be cool. Try here http://java-sl.com/advanced_rtf_editor_kit.html

如果您可以尝试“AdvancedRTFEditorKit”,那可能会很酷。在这里试试http://java-sl.com/advanced_rtf_editor_kit.html

I have used it to create a complete RTF editor, with all the supports MS Word has.

我已经用它创建了一个完整的 RTF 编辑器,具有 MS Word 的所有支持。

回答by Mike

Apache POI will also read Microsoft Word formats, not just RTF.

Apache POI 还将读取 Microsoft Word 格式,而不仅仅是 RTF。

POI

兴趣点

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;

public String getRtfText(String fileName) {
   File rtfFile = null;
   WordExtractor rtfExtractor = null ;

   try {
    rtfFile = new File(fileName);

    //A FileInputStream obtains input bytes from a file.
    FileInputStream inStream = new FileInputStream(rtfFile.getAbsolutePath());

    //A HWPFDocument used to read document file from FileInputStream
    HWPFDocument doc=new HWPFDocument(inStream);

    rtfExtractor = new WordExtractor(doc);
   }
   catch(Exception ex)
   {
    System.out.println(ex.getMessage());
   }

    //This Array stores each line from the document file.
    String [] rtfArray = rtfExtractor.getParagraphText();

    String rtfString = "";

    for(int i=0; i < rtfArray.length; i++) rtfString += rtfArray[i];

    System.out.println(rtfString);
    return rtfString;
 }