当前位置: 首页 > 面试题库 >

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

班景龙
2023-03-14
问题内容

我试图找出word文档中是否存在字体为2的任何内容。但是,我无法做到这一点。首先,我尝试读取只有一行和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中,您将具有以下内容:

<w:rPr>

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

</w:rPr>

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

与HWPF支持的二进制doc格式相同。如果查看[MS-DOC],您还将看到它还以半点为单位指定了文本大小。



 类似资料:
  • 我试图找出word文档中是否存在字体为2的内容。然而,我一直无法做到这一点。首先,我试着阅读一个示例word文档中每个单词的字体,该文档只有一行和7个单词。我没有得到正确的结果。 这是我的代码: 但是,上面的代码总是将字体大小增加一倍。i、 e.如果文档中的实际字体大小为12,则输出24,如果实际字体大小为8,则输出16。 这是从word文档中读取字体大小的正确方法吗??

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

  • 问题内容: 我搜索了这个问题,但找不到任何有用的答案。我想获取文档中每个单词的总数,例如,我的索引中有一些推文,并且有一条推文中写着这样的内容:“这里太无聊了,我想去我的家,甜蜜的家”。查询应返回如下响应: 有可能这样做吗? 问题答案: 您正在寻找利用分析仪的。这样做时,您可以定义所需的任何分析器,即阻止分析器将单词转换为根/普通形式。查看文档以获取更多详细信息。 在: 出:

  • 将字符串中每个单词的首字母大写。 使用 ``String.replace()来匹配每个单词的第一个字符,并使用String.toUpperCase()` 来将其大写。 const capitalizeEveryWord = str => str.replace(/\b[a-z]/g, char => char.toUpperCase()); capitalizeEveryWord('hello

  • 问题内容: 当这个城市只有一个字时,我的JS会很高兴: 芝加哥==>芝加哥 但是当它 圣地亚哥==>圣地亚哥 我如何使其成为圣地亚哥? 问题答案: 或在ES6中:

  • 问题内容: 我有一个字符串:“ hello good old world”,我想将每个单词的每个首字母大写,而不是使用.toUpperCase()整个字符串。是否有现成的java助手可以完成这项工作? 问题答案: 看看ACL WordUtils。