rtf是一种文档格式,比如:
{\rtf1\deff0{\fonttbl{\f0 Times New Roman;}{\f1\fcharset134 ���ź�;}}{\colortbl\red0\green0\blue0 ;\red0\green0\blue255 ;\red37\green37\blue37 ;\red255\green255\blue255 ;}{*\listoverridetable}{\stylesheet {\ql\cf0 Normal;}{*\cs1\cf0 Default Paragraph Font;}{*\cs2\sbasedon1\cf0 Line Number;}26503?\u30446?\u25237?\u20135?\u12290?}\par}
通常情况下我们打开rtf格式文档并将其保存为word格式文档就可以正常浏览,但是通过java代码如何将rtf文档转换成普通文本呢?
主要代码也是从网上找的,现在总结一下:
- 初始化一个javax.swing.text.Document的一个实例。
DefaultStyledDocument styledDoc = new DefaultStyledDocument();
- 通过InputStream初始化rtf输入流。这里我的rtf文本是一个字符串而非文件,使用java自带的ByteArrayInputStream类。
InputStream is = new ByteArrayInputStream(ad.getInformContent().getBytes());
- 通过java自带的RTFEditorKit类的read方法处理输入流。
new RTFEditorKit().read(is, styledDoc, 0);
- 将rtf文本转换成字符串。
String bodyText = new String(styledDoc.getText(0, styledDoc.getLength()).getBytes("gbk"));
- 最后根据需求将字符串输出或者保存到文件。