如何识别环绕式图片正下方的图题

你好。我现在需要识别环绕式图片正下方的图题。但是因为环绕式图片并不属于流式文档,所以我将图片的WrapType设置成inline的。但是这样会导致样式错乱掉,也无法获取到原图片正下方的文字(即图题)。请问如何获取到正确的图题呢

@qhkyqhfe 您能否在此处附上您的示例输入文档以供测试?我们将对其进行检查并为您提供更多信息。

test.docx (2.1 MB)

我需要识别第三章的所有图片和对应的图片下方的图题 图题和图片要一一对应上

@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);
            }
        }
    }
}

但是,有些形状没有设置 “与文本内联”,这就是为什么有些标题会相互重复。为了确保形状位于指定标题之下,需要为所有形状设置 “内联文字”,并将其直接放在段落之前。