我正在从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

07-26 07:53