5

我正在使用 Apache POI。

我可以使用“org.apache.poi.hwpf.extractor.WordExtractor”从 doc 文件中读取文本

甚至使用“org.apache.poi.hwpf.usermodel.Table”获取表格

但请建议我,如何获取文本的粗体/斜体格式。

提前致谢。

4

2 回答 2

5

WordExtractor returns only the text, nothing else.

The simplest way for you to get the text+formatting of a word document is to switch to using Apache Tika. Apache Tika builds on top of Apache POI (amongst others), and offers both plain text extraction and rich extraction (XHTML with formatting).

Alternately, if you want to write the code yourself, I'd suggest you review the code in Tika's WordExtractor, which demonstrates how to use Apache POI to get the formatting information of runs of text out.

于 2013-06-05T15:25:07.180 回答
1

您可以使用Range来阅读,而不是使用 WordExtractor :

...
HWPFDocument doc = new HWPFDocument(fis);
Range r = doc.getRange();
...

范围是该模型的中心类。当您获得范围时,您可以更多地使用文本的功能,例如,遍历所有 CharacterRuns,并检查它是否为斜体 (.isItalic()) 或更改为斜体:(.setItalic(true))。

for(int i = 0; i<r.numCharacterRuns(); i++)
        {
            CharacterRun cr = r.getCharacterRun(i);
            cr.setItalic(true);
            ...
        }

...
File fon = new File(yourFilePathOut);
FileOutputStream fos = new FileOutputStream(fon);
doc.write(fos); 
...

如果您坚持使用 HWPF,它会起作用。之间,框架成和使用段落的概念更方便。

于 2015-10-27T12:10:26.247 回答