我正在从WordExtractor
类(Apache POI)中提取文本,但是某些.doc
文件出错。调试时,我看到出现问题的那一行是这里的最后一条:
HWPFDocument docx = new HWPFDocument(new FileInputStream(file));
WordExtractor we = new WordExtractor(docx);
String T = we.getText().replaceAll("\\n", " ").replaceAll("\\r", " ");
对于大多数
.docx
和.doc
文件,它都可以正常工作。错误消息是:
Exception in thread "main" java.lang.RuntimeException:
java.lang.IllegalArgumentException: The end (4958) must not be before the start (4990)
我该如何解决?
最佳答案
docs中的XWPFWordExtractor:
Helper类从OOXML Word文件中提取文本
所以这是您的问题:)以及docs的解决方案:
对于Word 97-Word 2003中的.doc文件,在暂存器中有
org.apache.poi.hwpf.extractor.WordExtractor,它将返回文本
为您的文档。
使用POI 3.7的用户还可以从旧版本中提取简单的文本内容
使用暂存器类的Word 6和Word 95文件
org.apache.poi.hwpf.extractor.Word6Extractor。
对于.docx文件,相关类为
org.apache.poi.xwpf.extractor.XPFFWordExtractor