Ant*_*ony 6 java ms-word word-processor apache-poi
我试图找出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;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,上面的代码总是使字体大小加倍.即,如果文档中的实际字体大小为12,则输出24,如果实际字体为8,则输出16.
这是从word文档读取字体大小的正确方法吗?
是的,这就是正确的方法;测量以半点为单位。
在 docx 中,您会看到类似以下内容:
<w:rPr>
<w:sz w:val="28" />
</w:rPr>
Run Code Online (Sandbox Code Playgroud)
@sz 上的 ECMA 376 规范将单位定义为ST_HpsMeasure(半点测量)
与 HWPF 支持的二进制 doc 格式相同。如果您查看[MS-DOC],您会发现它还指定了以半磅为单位的文本大小。
| 归档时间: |
|
| 查看次数: |
2575 次 |
| 最近记录: |