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