当前位置: 首页 > 知识库问答 >
问题:

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

严成礼
2023-03-14

我试图找出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;
  }
}

但是,上面的代码总是将字体大小增加一倍。i、 e.如果文档中的实际字体大小为12,则输出24,如果实际字体大小为8,则输出16。

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

共有1个答案

谭修竹
2023-03-14

是的,这是正确的方法;测量单位为半个点。

在docx中,您会有如下内容:

<w:rPr>

  <w:sz w:val="28" /> 

</w:rPr>

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

它与HWPF支持的二进制文档格式相同。如果你看一下[MS-DOC],你会发现它还以半点为单位指定文本的大小。

 类似资料:
  • 问题内容: 我试图找出word文档中是否存在字体为2的任何内容。但是,我无法做到这一点。首先,我尝试读取只有一行和7个单词的示例单词文档中每个单词的字体。我没有得到正确的结果。 这是我的代码: 但是,以上代码始终使字体大小加倍。也就是说,如果文档中的实际字体大小是12,则输出24;如果实际字体是8,则输出16。 这是从Word文档读取字体大小的正确方法吗? 问题答案: 是的,那是正确的方法;测量单

  • OOXML包含以下代码: 我看到里面嵌着OLEObject。但不确定如何阅读它的内容。非常感谢任何帮助。

  • 如何使用Apache POI创建Word文档?

  • 问题内容: 是否具有将字符串中的每个单词都大写的功能,或者这是手动过程? 例如“鲍勃高”,而我想要“鲍勃高” 当然有东西,我发现的Swift IOS答案似乎都没有涵盖。 问题答案: 你在找吗 讨论 一个字符串,其中每个单词的第一个字符均更改为其相应的大写值,而所有其余字符均设置为其相应的小写值。 和/或 使用指定的语言环境返回接收器的大写形式。 对于提供给用户的字符串,请传递当前语言环境([NSL

  • 正如您在word文档中看到的,有许多带有要点的问题。现在,我正在尝试使用apache POI从文件中提取每个段落。这是我当前的代码 上述方法的问题在于它打印的是每一行而不是段落。此外,项目符号也从提取的字符串中删除。返回一个纯字符串。 谁能解释一下我做错了什么。也请建议如果你有一个更好的想法来解决它。

  • 我有一个有很多表格的word文档。我想要一个宏,它将所有表的字体大小更改为10,将每个表自动匹配到窗口,并均匀分布列。我可以使用下面的代码完成最后两个目标,但不确定如何更改字体大小。任何帮助将不胜感激。