如图: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);
我发现一个问题,以这种方式插入图片,会导致图片从每行的首个字符的位置插入,而不是从书签的位置插入。假如书签在每行中间的位置,图片还是会在每行首个字符的位置显示。有什么办法解决这个问题吗?我想让图片在书签的位置显示
@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 很高兴知道你已经解决了你的问题。