paragraphs.get(1).getParagraphFormat().getStyle().getFont().getColor()获取的不对,获取的貌似是默认段落的样式
要获取整个段落的样式,您可以使用 ParagraphFormat
类来访问段落的格式设置。请确保您获取的是段落的实际样式,而不是默认样式。以下是一个示例代码,展示如何获取段落的样式属性,包括字体颜色:
// 假设您已经有一个 Document 对象
Document doc = new Document("您的文档路径.docx");
// 获取特定段落
Paragraph paragraph = doc.getFirstSection().getBody().getParagraphs().get(1);
// 获取段落格式
ParagraphFormat paragraphFormat = paragraph.getParagraphFormat();
// 获取段落的样式
Style style = paragraphFormat.getStyle();
// 获取字体颜色
Color fontColor = style.getFont().getColor();
// 输出字体颜色
System.out.println("段落字体颜色: " + fontColor);
在这个示例中,我们首先获取文档中的特定段落,然后通过 getParagraphFormat()
方法获取该段落的格式。接着,我们可以通过 getStyle()
方法获取段落的样式,并从中提取字体颜色。
请确保您在使用时替换文档路径和段落索引,以适应您的具体需求。如果您仍然遇到问题,请检查段落是否确实应用了特定样式,而不是使用默认样式。
实际测试获取不到设置的颜色
感谢,已经解决,实际通过 paragraph.getListLabel().getFont().getColor()可以获取到
@vyacheslav.deryushev 我测试发现paragraph.getListLabel().getFont()可以获取段落的大部分样式,但是underline和StrikeThrough获取的都不是设置的值,获取border直接报错java.lang.RuntimeException: java.lang.IllegalStateException: Cannot change direct attributes on a list label. Paragraph doesn’t belong to a list.
@maochen 每个段落可以有多个运行,每个运行可以有自己的字体设置。ListLabel 仅定义标签参数。段落可以是列表项,也可以不是。
for (Paragraph paragraph : (Iterable<Paragraph>) doc.getChildNodes(NodeType.PARAGRAPH, true)) {
// 使用列表。
if (paragraph.getListFormat().isListItem()) {
ListLabel label = paragraph.getListLabel();
label.getFont().setUnderline(Underline.SINGLE);
label.getFont().setStrikeThrough(true);
}
// 获取文本颜色。
for (Run run : paragraph.getRuns()) {
Color textColor = run.getFont().getColor();
}
}
感谢,我也刚找到这个属性,确实可以拿得到
1 Like