【问题标题】:How to read font size and font name in .docx in Apache POI(java)如何在 Apache POI(java) 中读取 .docx 中的字体大小和字体名称
【发布时间】:2015-07-17 15:33:30
【问题描述】:

这是我的代码。

XWPFRun run = runlist.get(0);
double fontsize = (double)(run.getFontSize());
String fontfamily = (String)run.getFontFamily();

当它读取 .docx 文件时,它有时会在字体大小上返回 -1,在字体系列中返回 null。

我知道这是因为它们是默认值,但我不想要 -1 和 null 我只想要那个默认值的名称。

如何阅读?

【问题讨论】:

    标签: java fonts apache-poi document docx


    【解决方案1】:

    我遇到了类似的问题,我用document.getStyles().getDefaultRunStyle().getFontSize(); 解决了它

    【讨论】:

    • 它给出了一些时间字体大小和一些时间 -1 作为字体大小。您能否在这里发布您的完整代码以获得直觉?我是 POI 的新手。
    • @OmPrakash 出现此问题的原因是您的文件已经是已转换为 docx/doc 的 doc/docx。如果您打开一个空白文件并写入相同的文本,使用完全相同的格式(不是复制),您可以获得正确的字体大小。
    【解决方案2】:

    XWPFRun 上的字体/字符属性仅返回覆盖详细信息,因此与周围文本不同的设置

    如果运行使用默认样式,您需要向上移动到它所属的XWPFParagraph(或表格等),然后调用getStyleId() 以获取适用于该段落的样式。

    然后,在文档上调用XWPFDocument.getStyles().getStyle(styleId) 以获取适用于感兴趣段落的XWPFStyle 对象。

    从样式中,您可以获取在该样式中定义的属性,例如字体。如果样式继承自父项,您可能还需要获取父项。

    目前,XWPFStyle 对象的级别有点低,所以改进它的补丁是gratefully received!

    【讨论】:

    • 现在我可以获取样式,但我仍然看不到 XWPFStyle 对象可以调用方法来获取那些字体名称和字体大小。它只有处理段落样式的方法,例如 Body A Heading1 Heading2 等。
    • 您需要使用低级 CTStyle 对象。好吧,简单地使用CTStyle,然后提交一个补丁以在XWPFStyle 上公开有用的东西,以避免未来的用户不得不这样做!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2021-01-12
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多