Ошибка с 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

Другие вопросы по тегам