你好。我现在需要识别环绕式图片正下方的图题。但是因为环绕式图片并不属于流式文档,所以我将图片的WrapType设置成inline的。但是这样会导致样式错乱掉,也无法获取到原图片正下方的文字(即图题)。请问如何获取到正确的图题呢
@qhkyqhfe 您可以使用以下代码获取形状下方的文本:
Document doc = new Document("test.docx");
NodeCollection shapes = doc.getChildNodes(NodeType.SHAPE, true);
for (Shape shape : (Iterable<Shape>)shapes) {
Table table = (Table) shape.getAncestor(NodeType.TABLE);
if (table != null) {
Paragraph paraTable = (Paragraph) table.getNextSibling();
if (!paraTable.getText().trim().equals("")) {
System.out.println(paraTable.getText());
}
}
else {
Paragraph paraShape = (Paragraph) shape.getAncestor(NodeType.PARAGRAPH);
if (paraShape != null) {
String paraShapeText = paraShape.getText();
if (paraShapeText.trim().equals("")) {
System.out.println(paraShape.getNextSibling().getText());
}
else {
System.out.println(paraShapeText);
}
}
}
}
但是,有些形状没有设置 “与文本内联”,这就是为什么有些标题会相互重复。为了确保形状位于指定标题之下,需要为所有形状设置 “内联文字”,并将其直接放在段落之前。