弄了整整三天,终于搞定了,在此和大家分享一下我的收获,如有更好的解决方法,请指教,谢谢!
借鉴:rcom10002
想要做一个RTF转换TXT的代码,找了一圈,好不容易找了个折中的方法,先转HTML,然后提取HTML中的纯文本部分,下面把整个方法介绍一下。
一、第三方开发包
先简单介绍一下RTF格式相关的内容,摘自百度百科:
作为微软公司的标准文件,早期外间需要数十美元向微软付款,才能购买一本薄薄的RTF标准文件。不过随着采用RTF格式标准的软件愈来愈多,RTF格式也愈来愈普遍,微软公司就把标准文件公开,放在网上供开发者下载。现时可供下载的各个RTF版本标准文件如下: RTF 1.9.1 specification (March 2008) RTF 1.8 specification (April 2004) RTF 1.6 specification (May 1999) RTF 1.5 specification (April 1997) RTF 1.3 and 1.5 specifications RTF 1.0 specification (June 1992) RTF格式是许多软件都能够识别的文件格式。比如Word、WPS Office、Excel等都可以打开RTF格式的文件,这说明这种格式是较为通用的。 RTF是Rich Text Format的缩写,意即多文本格式。这是一种类似DOC格式(Word文档)的文件,有很好的兼容性,使用Windows“附件”中的“写字板”就能打开并进行编辑。使用“写字板”打开一个RTF格式文件时,将看到文件的内容;如果要查看RTF格式文件的源代码,只要使用“记事本”将它打开就行了。这就是说,你完全可以像编辑HTML文件一样,使用“记事本”来编辑RTF格式文件。
忘记怎么找到WebCAT了,可能找太多、太乱,当时的关键词也没记住,http://webcat.sourceforge.net/,JavaDoc可以从这里http://webcat.sourceforge.net/javadocs/访问。WebCAT是葡萄牙里斯本大学的一个XXX什么的开发的(WebCAT was developed at the XLDB group of the Department of Informatics of the Faculty of Sciences of the University of Lisbon in Portugal.),其中提供的RTF2HTML可以很方便地把RTF文件转换成HTML文件,而且速度也还可以。不过只是针对文本,不能保留图片等资源,有些遗憾,但是并不影响转TXT的目的。
二、RTF转HTML
new RTF2HTML().convertRTFToHTML(new File(filename)),方法convertRTFToHTML会返回一个转换成HTML格式的字符串。
三:下载WEBCAT地址:http://download.youkuaiyun.com/detail/yongbuyanqi88888/8060051
四:使用该工具会出现中文格式乱码,解决方法如下:(红色字体部分)
DefaultStyledDocument styledDoc = new DefaultStyledDocument(); //javax.swing.text.Document的一个实例
try {
InputStream is = new FileInputStream( new File( " data/java.swing.text读RTF文档测试.rtf " ));
new RTFEditorKit().read(is, styledDoc, 0 );
bodyText = new String(styledDoc.getText(0, styledDoc.getLength()).getBytes("ISO8859_1")); //提取文本
} catch (IOException e) {
throw new DocumentHandlerException( " 不能从RTF中摘录文本! " , e);
} catch (BadLocationException e) {
throw new DocumentHandlerException( " 不能从RTF中摘录文本! " , e);
}
System.out.println(bodyText);
RTF-HTML 终于解决了,接下来继续烟具HTML转换为RTF,嘿嘿,加油!