ApachePOIを使用しているときにMSWordファイルから(プログラムで)取得している文字列は、MSWordでファイルを開いたときに表示できるテキストとは異なります。
次のコードを使用する場合:
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
」などの多くの不要な文字列を含む1行です。
次のコードは、1行の問題を「修正」しますが、すべての無効な文字と不要なテキストを維持します。
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のクイックガイドを見たときに思いついたのはそれです。私がそうなら、正しいアプローチは何ですか?
その出力が正しい場合、不要なテキストを取り除くための標準的な方法はありますか、それとも自分でフィルターを作成する必要がありますか?