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