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 | 57 +++++++++++++++++++++++++-------------------------------- 1 files changed, 25 insertions(+), 32 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 7fb9d31..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 @@ -13,14 +13,7 @@ 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.io.*; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -118,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); @@ -173,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"); @@ -181,17 +174,30 @@ XWPFDocument document = new XWPFDocument(fis); XWPFParagraph pic = document.createParagraph(); XWPFRun picRun = pic.createRun(); - Map<String, Object> dataMap1 = new HashMap<>(); -// dataMap.put("${picture}", picRun.addPicture( -// new FileInputStream("/usr/local/project/file/1.jpg"), XWPFDocument.PICTURE_TYPE_JPEG, -// "/usr/local/project/file/1.jpg", -// Units.toEMU(60), -// Units.toEMU(30) -// )); + 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); - replaceParagraph1(paragraph); } // 处理表格 @@ -278,19 +284,6 @@ for (ReplacementInfo info : replacements) { replaceRunRange(paragraph, info); - } - } - private static void replaceParagraph1(XWPFParagraph paragraph) throws IOException, InvalidFormatException { - List<XWPFRun> runs = paragraph.getRuns(); - for (XWPFRun r : runs) { - String text = r.getText(0); - if (text != null && text.contains("{{image}}")) { - r.setText("", 0); - FileInputStream is = new FileInputStream("/usr/local/project/file/1.jpg"); - r.addBreak(); - r.addPicture(is, XWPFDocument.PICTURE_TYPE_JPEG, "/usr/local/project/file/1.jpg", Units.toEMU(60), Units.toEMU(30)); - is.close(); - } } } -- Gitblit v1.7.1