Ошибка с getText(). ReplaceAll() в Java
Я извлекаю текст из 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)
Как я могу это исправить?
1 ответ
XWPFWordExtractor из документов:
Вспомогательный класс для извлечения текста из файла OOXML Word
Так что это ваша проблема:) И решение из их документов:
Для файлов.doc из Word 97 - Word 2003 в блокноте есть 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