博敏 网站开发,郑州网站建设+论坛,沈阳cms建站模板,vps 安装wordpressJava使用#xff08;Poi-tl#xff09; 在word#xff08;docx#xff09;中指定位置插入图片 Poi-tl 简介Maven 依赖配置Poi-tl 实现原理与步骤1. 模板标签规范2.完整实现代码3.效果展示 Poi-tl 简介
Poi-tl 是基于 Apache POI 的 Java 开源文档处理库#xff0c;专注于… Java使用Poi-tl 在worddocx中指定位置插入图片 Poi-tl 简介Maven 依赖配置Poi-tl 实现原理与步骤1. 模板标签规范2.完整实现代码3.效果展示 Poi-tl 简介
Poi-tl 是基于 Apache POI 的 Java 开源文档处理库专注于高效操作 Word 文档.docx 格式。它通过模板引擎机制简化复杂文档生成流程相比原生 POI 具备更简洁的 API、更强的灵活性和更优的性能表现广泛应用于报表生成、合同模板填充、文档批量处理等企业级场景。
Maven 依赖配置
dependencygroupIdcom.deepoove/groupIdartifactIdpoi-tl/artifactIdversion1.12.0/version
/dependencyPoi-tl 实现原理与步骤
1. 模板标签规范
在 Word 模板中需使用特定格式的占位符标识图片插入位置标准格式为{{标签名称}}。 示例标签格式
{{Head}} !-- 审核人签名位置 --
{{Approver}} !-- 批准人签名位置 --2.完整实现代码
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.PictureType;
import com.deepoove.poi.data.Pictures;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.util.HashMap;
import java.util.Map;/*** Word文档图片插入工具类* 功能通过Poi-tl在Word模板指定位置插入图片*/
public class WordImageInserter {/*** 主方法执行Word图片插入操作*/public static void main(String[] args) {Path templatePath Path.of(D:\\template.docx); // 源文档模板路径Path outputPath Path.of(D:\\template_temp.docx); // 新文件路径Path inspectorImagePath Path.of(D:\\signatures\\inspector.png); // 审核人签名图片Path approverImagePath Path.of(D:\\signatures\\approver.png); // 批准人签名图片try {// 绑定模板占位符与图片渲染对象MapString, Object dataModel new HashMap();dataModel.put(Head, createPicture(inspectorImagePath, 100, 50)); // 替换{{Head}}标签dataModel.put(Approver, createPicture(approverImagePath, 100, 50)); // 替换{{Approver}}标签// 执行文档渲染与图片插入try (InputStream templateStream Files.newInputStream(templatePath);OutputStream tempOutputStream Files.newOutputStream(tempOutputPath)) {// 编译模板并渲染数据XWPFTemplate template XWPFTemplate.compile(templateStream).render(dataModel);// 输出到临时文件避免直接修改原文件导致损坏template.write(tempOutputStream);template.close();}// 原子性替换原文件保证操作完整性Files.move(tempOutputPath, templatePath, StandardCopyOption.REPLACE_EXISTING);System.out.println(图片插入操作完成文档已更新);} catch (IOException e) {System.err.println(文档处理异常 e.getMessage());e.printStackTrace();}}/*** 构建图片渲染对象支持尺寸自定义* param imagePath 图片文件路径* param width 图片宽度像素* param height 图片高度像素* return 图片渲染对象可直接用于模板渲染* throws IOException 图片读取失败时抛出*/private static Object createPicture(Path imagePath, int width, int height) throws IOException {// 使用NIO流加载图片自动识别图片类型此处显式指定为PNGreturn Pictures.ofStream(Files.newInputStream(imagePath), PictureType.PNG).size(width, height) // 自定义图片尺寸.create(); // 生成图片渲染实体}
}3.效果展示