这是从这里开始的:
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源代码中获得此功能。我是天真的吗?
答案 0 :(得分:1)
在答案中提出一些意见:
如果查看Java Apache POI read Word (.doc) file and get named styles used中给出的答案,您将看到Apache Tika如何提取段落样式名称。取自Paragraph javadoc:
public short getStyleIndex()
返回适用于此段落的样式的索引。可以从StyleSheet通过StyleSheet.getStyleDescription(int)查找样式的详细信息
在你的情况下,你所追求的是等效但是对于角色奔跑。这也是(现在)可能的,如CharacterRun.getStyleIndex() javadocs
中所给出的那样public short getStyleIndex()
返回适用于此Run的基本样式的索引。可以从StyleSheet通过StyleSheet.getStyleDescription(int)查找样式的详细信息。
请注意,运行通常会覆盖基类中的某些样式属性,因此通常应直接从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());
它向您展示了如何获取应用于Character Run
的基本样式的名称最后一件事 - 因为你需要使用每晚构建,或等待3.11 beta 1,因为提到的一些代码不是3.10 final。
答案 1 :(得分:-1)
使用
paragraph.getCTP().getPPr().getRPr().isSetB()