Java: 转换RTF文件为txt文本

代码整理自网络.

  • 缺点: 这样转换会丢失RTF文件中的样式(比如字体大小,颜色,加粗等).
  • 优点: 没有引用任何外部依赖,仅需JDK即可运行.

java标志
image-2956

DefaultStyledDocument styledDoc = new DefaultStyledDocument();
// D:\\rtf.txt 是RTF文件,用记事本打开后另存的txt文件.
try(InputStream is = new ByteArrayInputStream(Files.readAllBytes(Paths.get("D:\\rtf.txt")))) {
    new RTFEditorKit().read(is, styledDoc, 0);
    // 可能会存在编码问题,只能多试几个编码,直到找到正确的那个.
    String bodyText = new String(styledDoc.getText(0, styledDoc.getLength()).getBytes("UTF-8"));
    // bodyText = new String(styledDoc.getText(0, styledDoc.getLength()).getBytes("GB2312"));
    // bodyText = new String(styledDoc.getText(0, styledDoc.getLength()).getBytes("GBK"));
    System.out.println(bodyText);
}catch(Exception ex){
    System.out.println(ex.getMessage());
}