7
我有其中有一些文字子弹如截图所示下面如何读取RTF文件子弹
一个RTF文件,我想和子弹一起提取数据,但是当我打印在控制台中,我得到垃圾值。如何从控制台完全打印相同的内容。 我尝试的方法是如下
public static void main(String[] args) throws IOException, BadLocationException {
RTFEditorKit rtf = new RTFEditorKit();
Document doc = rtf.createDefaultDocument();
FileInputStream fis = new FileInputStream("C:\\Users\\Guest\\Desktop\\abc.rtf");
InputStreamReader i =new InputStreamReader(fis,"UTF-8");
rtf.read(i,doc,0);
System.out.println(doc.getText(0,doc.getLength()));
}
控制台输出:
我认为垃圾值是由于操作台不支持chareset所以我试图生成一个PDF文件,但在PDF也我得到相同的垃圾值。 这是PDF的代码
Paragraph de=new Paragraph();
Phrase pde=new Phrase();
pde.add(new Chunk(getText("C:\\Users\\Guest\\Desktop\\abc.rtf"),smallNormal_11));
de.add(pde);
de.getFont().setStyle(BaseFont.IDENTITY_H);
document.add(de);
public static String getText() throws IOException, BadLocationException {
RTFEditorKit rtf = new RTFEditorKit();
Document doc = rtf.createDefaultDocument();
FileInputStream fis = new FileInputStream("C:\\Users\\Guest\\Desktop\\abc.rtf");
InputStreamReader i =new InputStreamReader(fis,"UTF-8");
rtf.read(i,doc,0);
String output=doc.getText(0,doc.getLength());
return output;
}
不是写成像PDF文件那样复杂的东西,而是将与控制台输出相同的东西写入普通的UTF-8文本文件,然后十六进制转储该文件以查看正在写入的实际值。 –
我删除了'itext'标签(编辑待审核者批准),因为你的问题不是关于iText的。这是关于RTF。斯蒂芬绝对是对的。分解你的问题,首先确保它在控制台中工作,然后再开始考虑PDF。 –
我认为他试图改为pdf来解决问题,这不是他的最终目标。 – Asoub