From 4fcd294f79c626f3a8889d1e92a02d810c754747 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期四, 10 四月 2025 16:19:47 +0800 Subject: [PATCH] bug修改 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/WordUtil.java | 34 +++++++++++++++++++++++++++------- 1 files changed, 27 insertions(+), 7 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/WordUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/WordUtil.java index 60d821a..267a564 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/WordUtil.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/WordUtil.java @@ -5,17 +5,15 @@ import freemarker.template.Template; import freemarker.template.TemplateException; import lombok.extern.slf4j.Slf4j; - +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; +import org.apache.poi.util.Units; import org.apache.poi.xwpf.usermodel.*; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import javax.servlet.http.HttpServletResponse; import java.io.*; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -113,10 +111,10 @@ } - public String generatePdf(String basePackagePath, String templateFileName, Map<String,Object> templateParam, String fileName, String saveDirectory) { + public String generatePdf(String basePackagePath, String templateFileName, Map<String,Object> templateParam, String fileName, String saveDirectory,String url) { try { - fillTemplate(basePackagePath+templateFileName, saveDirectory+fileName+".docx", templateParam); + fillTemplate(basePackagePath+templateFileName, saveDirectory+fileName+".docx", templateParam,url); // 创建 Freemarker 的 Configuration 对象,设置默认的不兼容改进选项 // Configuration configuration = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS); @@ -168,13 +166,35 @@ } } - public static void fillTemplate(String templatePath, String outputPath,Map<String, Object> dataMap) { + public static void fillTemplate(String templatePath, String outputPath,Map<String, Object> dataMap,String url) { try (FileInputStream fis = new FileInputStream(templatePath)) { // 设置默认编码为UTF-8 System.setProperty("file.encoding", "UTF-8"); XWPFDocument document = new XWPFDocument(fis); + XWPFParagraph pic = document.createParagraph(); + XWPFRun picRun = pic.createRun(); + Base64.Decoder decoder = Base64.getDecoder(); + byte[] imageByte = decoder.decode(url); + InputStream stream = new ByteArrayInputStream(imageByte); + File tempFile = File.createTempFile("/usr/local/project/file/temp", ".jpg"); + tempFile.deleteOnExit(); // 程序结束时删除文件 + try (OutputStream out = new FileOutputStream(tempFile); + InputStream in = stream) { + byte[] buffer = new byte[1024]; + int length; + // 从原始流读取数据并写入临时文件 + while ((length = in.read(buffer)) > 0) { + out.write(buffer, 0, length); + } + } + dataMap.put("${picture}", picRun.addPicture( + new FileInputStream(tempFile), XWPFDocument.PICTURE_TYPE_JPEG, + "/usr/local/project/file/sign.jpg", + Units.toEMU(60), + Units.toEMU(30) + )); // 处理段落 for (XWPFParagraph paragraph : document.getParagraphs()) { replaceParagraph(paragraph, dataMap); -- Gitblit v1.7.1