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 | 47 +++++++++++++++++++++++++---------------------- 1 files changed, 25 insertions(+), 22 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 fd47a38..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,6 +5,7 @@ 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; @@ -12,19 +13,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.io.*; +import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -121,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); @@ -176,7 +166,7 @@ } } - 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"); @@ -184,14 +174,27 @@ XWPFDocument document = new XWPFDocument(fis); XWPFParagraph pic = document.createParagraph(); XWPFRun picRun = pic.createRun(); - XWPFPicture xwpfPicture = picRun.addPicture( - new FileInputStream("/usr/local/project/file/1.jpg"), XWPFDocument.PICTURE_TYPE_JPEG, - "/usr/local/project/file/1.jpg", + 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) - ); - dataMap.put("picture", xwpfPicture); - + )); // 处理段落 for (XWPFParagraph paragraph : document.getParagraphs()) { replaceParagraph(paragraph, dataMap); -- Gitblit v1.7.1