如何使用POI以粗体和斜体格式阅读word文档

时间:2013-06-05 10:40:48

标签: apache-poi doc bold italic hwpf

我正在使用Apache POI。

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

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

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

提前致谢。

2 个答案:

答案 0 :(得分:4)

WordExtractor只返回文字,没有别的。

获取word文档的文本+格式的最简单方法是切换到使用Apache Tika。 Apache Tika构建于Apache POI(以及其他)之上,并提供纯文本提取和丰富提取(带格式化的XHTML)。

或者,如果您想自己编写代码,我建议您查看Tika's WordExtractor中的代码,该代码演示了如何使用Apache POI获取文本运行的格式化信息。

答案 1 :(得分:1)

您可以使用Range阅读

,而不是使用WordExtractor
...
HWPFDocument doc = new HWPFDocument(fis);
Range r = doc.getRange();
...

范围是该模型的中心类。当你获得范围时,你可以更多地使用文本的功能,例如,迭代所有的CharacterRuns,并检查它是否是Italic(.isItalic())或更改为Italic:(。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,它会起作用。之间,框架和使用Paragraph的概念更方便。