如何使用POI读取word文档中每个单词的字体大小?

我试图找出word文档中是否存在字体为2的任何内容。但是,我无法做到这一点。 首先,我试图读取样本word文档中每个单词的字体,该单词只有一行和7个单词。 我没有得到正确的结果。

这是我的代码:

HWPFDocument doc = new HWPFDocument (fileStream); WordExtractor we = new WordExtractor(doc); Range range = doc.getRange() String[] paragraphs = we.getParagraphText(); for (int i = 0; i < paragraphs.length; i++) { Paragraph pr = range.getParagraph(i); int k = 0 while (true) { CharacterRun run = pr.getCharacterRun(k++); System.out.println("Color: " + run.getColor()); System.out.println("Font: " + run.getFontName()); System.out.println("Font Size: " + run.getFontSize()); if (run.getEndOffSet() == pr.getEndOffSet()) break; } } 

但是,上面的代码总是使字体大小加倍。 即,如果文档中的实际字体大小为12,则输出24,如果实际字体为8,则输出16。

这是从word文档读取字体大小的正确方法吗?

是的,这是正确的方法; 测量值为半分。

在docx中,你有类似的东西:

    

@sz上的ECMA 376规范将单位定义为ST_HpsMeasure(半点测量)

它与HWPF支持的二进制doc格式相同。 如果你看[MS-DOC] ,你会看到它还以半分指定了文本的大小。