当前位置: 首页 > 知识库问答 >
问题:

Java Apache POI读取Word(.doc)文件并获取使用的命名字符样式

何涵畅
2023-03-14

从这里开始:

Java Apache POI读取Word(.doc)文件并使用命名样式

当时(2012年10月),有一种解决方案可以找到段落样式,但不能找到字符样式。

然而...例如,如果你使用LibreOffice Writer打开一个Word文档,它确实会将样式和突出显示从. doc翻译成. odt...所以某个地方的某人似乎已经破解了这个...

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

共有2个答案

羊舌和安
2023-03-14

使用

paragraph.getCTP().getPPr().getRPr().isSetB()
席宜修
2023-03-14

推广一些评论以获得答案:

如果您查看JavaApache POI读取Word(. doc)文件中给出的答案,并使用命名样式,您将了解Apache Tika如何提取段落样式名称。摘自段落javadoc:

公共短getStyleIndex()

返回应用于此段落的样式索引。样式的细节可以通过样式表从样式表中查找。getStyleDescription(int)

在你的情况下,你所追求的是同等的,但对一个角色的运行。这(现在)也是可能的,正如CharacterRun中给出的那样。getStyleIndex()javadocs

公共短getStyleIndex()

返回应用于此运行的基本样式的索引。样式的细节可以通过样式表从样式表中查找。getStyleDescription(int)。

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

为了了解这一点,TestRangeProperties单元测试中给出了一个很好的例子。从这里,我们可以看到这样的代码:

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中。

 类似资料:
  • 我正在添加我用来尝试这样做的代码。如果有人想尝试这样做,祝你好运。

  • 问题内容: 请问如何通过cucumber读取excel、word、pdf文件? 问题答案: 反对法的f

  • 您不需要理解内容,只需查看我的占位符和。有10页与这些占位符,现在我应该取代他们与其他内容。黑色和黄色的盒子是公司的照片,我不会分享。 现在,我开始阅读整个docx4j文档,并在一段时间后生成以下代码: 一些解释: 是上图中文件的路径 是应该替换的值 是应该替换的值 但是当我运行这个方法时,什么也没有发生,我的控制台只是打印一些信息。如果它们很重要,我会编辑帖子,但我不这么认为。 那么我的错在哪里

  • 我正在编写一个java代码,它利用Apache-poi读取ms-office.doc文件,利用itext jar API创建并写入pdf文件。我已经阅读了.doc文件中打印的文本和表格。现在我正在寻找一个读取文档中写入的图像的解决方案。我已经编写了如下代码来读取文档文件中的图像。为什么这段代码不起作用。 存在的问题是:1。条件if(Picture.HasPicture(run))不满足,但文档具有

  • 我需要在android中以字符串的形式加载一个xml文件,以便将其加载到TBXML xml解析器库并对其进行解析。我现在必须以字符串形式读取文件的实现需要大约2秒,即使对于一些KBs的非常小的xml文件也是如此。在Java/Android中,有没有已知的快速方法可以将文件读取为字符串? 这是我现在拥有的代码: