我在使用 Apache POI 时(以编程方式)从 MS Word 文件中获取的字符串与我在使用 MS Word 打开文件时可以看到的文本不同。
使用以下代码时:
File someFile = new File("some\\path\\MSWFile.doc");
InputStream inputStrm = new FileInputStream(someFile);
HWPFDocument wordDoc = new HWPFDocument(inputStrm);
System.out.println(wordDoc.getText());
输出是包含许多“无效”字符(是的,“框”)和许多不需要的字符串的单行,例如“ FORMTEXT
”、“ HYPERLINK \l "_Toc##########"
”(“#”是数字)、“ PAGEREF _Toc########## \h 4
”等。
以下代码“修复”了单行问题,但保留了所有无效字符和不需要的文本:
File someFile = new File("some\\path\\MSWFile.doc");
InputStream inputStrm = new FileInputStream(someFile);
WordExtractor wordExtractor = new WordExtractor(inputStrm);
for(String paragraph:wordExtractor.getParagraphText()){
System.out.println(paragraph);
}
我不知道我是否使用了错误的方法来提取文本,但这就是我在查看POI 的快速指南时想到的。如果我是,正确的方法是什么?
如果该输出是正确的,是否有摆脱不需要的文本的标准方法,还是我必须编写自己的过滤器?