Java往word模板里写入数据,写入图片。
·
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);
更多推荐



所有评论(0)