Word文档中,在书签处插入图片,如何让文字浮动在图片表面?

如图:1111111是我的书签处,我将图片放到了文字下方,可以显示出文字

以下是我的代码:

        Document doc = new Document("E:/TEST/DOCX.docx");
        Bookmark bookmark = doc.getRange().getBookmarks().get("qqq");
        if (bookmark != null) {

            Node bookmarkNode = bookmark.getBookmarkStart();

            DocumentBuilder builder = new DocumentBuilder(doc);

            builder.moveTo(bookmarkNode);

            Shape imageShape = builder.insertImage("E:/TEST/1.png");
            imageShape.setWrapType(WrapType.NONE);
            imageShape.setZOrder(-1);
            imageShape.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
            imageShape.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
        }
        doc.save("E:/TEST/111.docx");

    }

这个代码,插入的图片将文字内容全部盖住了。

@serendipity.zhq 如果你需要让文本在图像周围浮动,你应该使用imageShape.setWrapType(WrapType.SQUARE);

试过,没用。而且我需要的是文字浮动在图像上方,不是在图像周围浮动
以下是效果图:

@serendipity.zhq 您可以尝试使用:

imageShape.setWrapType(WrapType.TOP_BOTTOM);
imageShape.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
imageShape.setRelativeVerticalPosition(RelativeVerticalPosition.PARAGRAPH);

如果没有帮助,请提供您正在使用的数据。

无任何效果。
代码如下:

        Document doc = new Document("E:/TEST/DOCX .docx");
        Bookmark bookmark = doc.getRange().getBookmarks().get("qqq");
        if (bookmark != null) {

            Node bookmarkNode = bookmark.getBookmarkStart();
            DocumentBuilder builder = new DocumentBuilder(doc);
            builder.moveTo(bookmarkNode);
            Shape imageShape = builder.insertImage("E:/TEST/1.png");
            imageShape.setWrapType(WrapType.TOP_BOTTOM);
            imageShape.setZOrder(-1);
            imageShape.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
            imageShape.setRelativeVerticalPosition(RelativeVerticalPosition.PARAGRAPH);
        }
        doc.save("E:/TEST/111.docx");

    }

需要插入的文件链接:
(10.8 KB)
我想要的效果:
(75.4 KB)

@serendipity.zhq 感谢您提供预期的输出。我错误地理解了之前提供的图像。您可以使用:

imageShape.setWrapType(WrapType.NONE);
imageShape.setBehindText(true);
imageShape.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
imageShape.setRelativeVerticalPosition(RelativeVerticalPosition.PARAGRAPH);
imageShape.setHorizontalAlignment(HorizontalAlignment.CENTER);
imageShape.setVerticalAlignment(VerticalAlignment.CENTER);

非常感谢,这个问题已经解决

1 Like

我发现一个问题,以这种方式插入图片,会导致图片从每行的首个字符的位置插入,而不是从书签的位置插入。假如书签在每行中间的位置,图片还是会在每行首个字符的位置显示。有什么办法解决这个问题吗?我想让图片在书签的位置显示

@serendipity.zhq 您应该使用imageShape.setWrapType(WrapType.INLINE);如果你想在段落的当前位置插入图像。

我尝试过这种方式,但是图片把文字挤开了,我想要的是图片在文字下方(最上面的那张图示例),还有其他办法么

@serendipity.zhq 您能尝试使用以下代码插入图像吗:

private void insertImageBookmark(DocumentBuilder builder, Bookmark bookmark) throws Exception {
    if (bookmark != null) {
        Node bookmarkNode = bookmark.getBookmarkStart();

        builder.moveTo(bookmarkNode);

        Shape imageShape = builder.insertImage("image.jpg");
        imageShape.setWrapType(WrapType.NONE);
        imageShape.setBehindText(true);
        imageShape.setRelativeHorizontalPosition(RelativeHorizontalPosition.CHARACTER);
        imageShape.setRelativeVerticalPosition(RelativeVerticalPosition.PARAGRAPH);
    }
}

最后一句代码需要改一下就可以实现预期效果了imageShape.setRelativeVerticalPosition(RelativeVerticalPosition.LINE);
非常感谢!

@serendipity.zhq 很高兴知道你已经解决了你的问题。