Строки, которые я (программно) получаю из файлов MS Word при использовании Apache POI, не являются тем же самым текстом, на который я могу посмотреть, когда я открываю файлы с помощью 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 quick -руководство. Если да, то каков правильный подход?
Если этот вывод правильный, есть ли стандартный способ избавиться от нежелательного текста или мне придется написать собственный фильтр?