Java: Apache POI: Могу ли я получить чистый текст из файлов MS Word (.doc)?

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

Если этот вывод правильный, есть ли стандартный способ избавиться от нежелательного текста, или мне придется написать собственный фильтр?

11
задан the Tin Man 4 October 2012 в 17:48
поделиться