Map<String, String> details  书签key 和写入的数据值 value
//创建临时文件
File tempFile = new File("D:" + File.separator + System.currentTimeMillis() + ".docx");
String tempFilePath = tempFile.getPath();
InputStream inputStream = OssUtil.getFileInputStream("模板文件链接https://xxxx.docx");
Document  doc = new Document(inputStream);
DocumentBuilder builder = new DocumentBuilder(doc);
BookmarkCollection bookmarks = doc.getRange().getBookmarks();
//先插入二维码图片
//查找二维码图片特定名称的书签
Bookmark bookmark = bookmarks.get("书签名");
if (bookmark != null) {
    // 创建一个 DocumentBuilder 对象,并将光标移动到书签的位置
    builder.moveToBookmark(bookmark.getName());
    // 网址转为base64
    String qrUrl = "www.baidu.com";
    String base64String = QrCoder.base64ImageString(QrCoder.createQrCode(null, qrUrl));
    base64String = removeBase64Prefix(base64String);
    // 解码 Base64 字符串为字节数组
    byte[] imageBytes = Base64.getDecoder().decode(base64String);
    // 使用字节数组创建输入流
    ByteArrayInputStream imageStream = new ByteArrayInputStream(imageBytes);
    // 插入图片到文档中
    Shape shape = builder.insertImage(imageStream);
    shape.setWidth(125.0);
    shape.setHeight(125.0);
    // 关闭图片流
    imageStream.close();
  //删除details里的key
  details.remove("书签名")
}
//写入其他书签
for (Map.Entry<String, String> entry : details.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
    if (builder.moveToBookmark(key) && StringUtil.isNotEmpty(value)) {
        builder.write(value);
        bookmarks.remove(key);
    }
}
doc.save(tempFilePath);

更多推荐