使用Apache POI時,我(以編程方式)從MS Word文件獲取的字符串與使用MS Word打開文件時可以查看的文字不同。Java:Apache POI:我可以從MS Word(.doc)文件中獲得乾淨的文本嗎?
當使用以下代碼:
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's quick-guide時想到的。如果我是,那麼正確的方法是什麼?
如果輸出是正確的,是否有擺脫不需要的文本的標準方式,還是我必須寫我自己的過濾器?
段落第二種解決方案沒有工作,在使用它我的測試。 TIKA-1.2從.doc文件返回FORMCHECKBOX和其他內容。 .docx文件雖然工作正常。 – Simon 2013-02-07 14:55:53
我建議你試試最新的Tika版本1.3。如果問題仍然存在,請[提出錯誤](https://issues.apache.org/jira/browse/TIKA)並上傳示例文件,以便我們調查! – Gagravarr 2013-02-07 15:15:01
對於我來說,這仍然發生在Tika 1.3中,因爲它值得。 – damd 2013-02-22 16:16:38