【问题标题】:Java Apache POI read Word (.doc) file and get named CHARACTER styles usedJava Apache POI 读取 Word (.doc) 文件并获取使用的命名字符样式
【发布时间】:2014-01-29 07:55:18
【问题描述】:

从这里开始:

Java Apache POI read Word (.doc) file and get named styles used

当时 (10/2012) 有一种解决方案可以查找段落样式而不是字符样式。

然而...例如,如果您使用 LibreOffice Writer 打开 Word 文档,它确实会将样式和突出显示从 .doc 转换为 .odt ...因此某个地方似乎有人破解了这个...

我不知道 Apache POI 团队和 LibreOffice/OpenOffice 团队是否有任何关联,但我原以为 Apache POI 团队能够从 LO 源代码中获得此功能。我是不是太天真了?

【问题讨论】:

  • 如果您根据 CharacterRun 而不是段落查找,则您引用的其他问题的答案中的代码应该可以正常工作 - 如果您尝试它会发生什么?
  • 谢谢...但是poi.apache.org/apidocs/org/apache/poi/hwpf/usermodel/… - CharacterRun 没有与 Paragraph 一样的“getStyleIndex”方法。我正在尝试查找 字符样式的名称、索引或引用。
  • CharacterRun.getStyleIndex() 不能完全满足您的需求吗? ;-)
  • @Gagravarr 我确定您正在尝试提供帮助,但请阅读我所说的内容,然后检查 API。 CharacterRun 没有方法“getStyleIndex”。
  • 请检查 API,包括我提供给 JavaDocs 的链接,因为您可能会感到惊讶... :)

标签: java ms-word apache-poi libreoffice


【解决方案1】:

推广一些cmets到一个答案:

如果您查看Java Apache POI read Word (.doc) file and get named styles used 中给出的答案,您将了解 Apache Tika 如何提取段落样式名称。取自Paragraph javadoc

公共短 getStyleIndex()

返回适用于该段落的样式索引。可以通过 StyleSheet.getStyleDescription(int) 从 StyleSheet 中查找样式的详细信息

在您的情况下,您所追求的是等价的,但对于角色运行。这也是(现在)可能的,如CharacterRun.getStyleIndex() javadocs

公共短 getStyleIndex()

返回适用于此 Run 的基本样式的索引。可以通过 StyleSheet.getStyleDescription(int) 从 StyleSheet 中查找样式的详细信息。

请注意,运行通常会覆盖基础中的一些样式属性,因此通常应直接从 CharacterRun 本身获取样式信息。

要查看实际情况,TestRangeProperties unit test 中给出了一个很好的示例。从那里,我们看到这样的代码:

Range r = u.getRange();
StyleSheet ss = r._doc.getStyleSheet();

Paragraph p1 = r.getParagraph(0);
CharacterRun c1a = p1.getCharacterRun(0);

assertEquals("Normal", ss.getStyleDescription(c1a.getStyleIndex()).getName());

这向您展示了如何将基本样式的名称应用于角色运行

最后一件事 - 因为您需要使用每晚构建,或者等待 3.11 beta 1,因为提到的某些代码不在 3.10 final 中。

【讨论】:

    【解决方案2】:

    使用

    paragraph.getCTP().getPPr().getRPr().isSetB()
    

    【讨论】:

    • 添加更多细节将有助于您的回答得到肯定。
    • 这只会告诉你运行是否是粗体,它不会告诉你样式名称
    猜你喜欢
    • 2012-06-05
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2015-11-25
    • 2021-09-26
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多