From 7b570451b9655911eeb49320ff3edea8bdea9c7c Mon Sep 17 00:00:00 2001 From: lijiarao Date: Wed, 11 Sep 2024 17:39:30 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=B8=8B=E8=BD=BDpdf=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=B0=B4=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/CommonController.java | 5 ++-- .../modules/system/util/SysWaterMarkUtil.java | 25 +++++++++++++------ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java index b0a40b6b..85595eaf 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java @@ -24,7 +24,6 @@ import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.http.server.ServletServerHttpRequest; import org.springframework.util.AntPathMatcher; -import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; @@ -233,7 +232,7 @@ public class CommonController { } //pdf加水印 if ("pdf".equalsIgnoreCase(FileUtil.extName(fileName))) { - inputStream = sysWaterMarkUtil.addWatermarkToPdf(inputStream); + inputStream = sysWaterMarkUtil.addWatermarkToPdf(inputStream,request); } response.addHeader("Content-Disposition", "attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"iso-8859-1")); response.setContentType("application/force-download");// 设置强制下载不打开 @@ -411,7 +410,7 @@ public class CommonController { } //pdf加水印 if ("pdf".equalsIgnoreCase(FileUtil.extName(fileName))) { - inputStream = sysWaterMarkUtil.addWatermarkToPdf(inputStream); + inputStream = sysWaterMarkUtil.addWatermarkToPdf(inputStream, request); } ossFileService.updateById(ossFile); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/util/SysWaterMarkUtil.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/util/SysWaterMarkUtil.java index 42a98d6e..807ef64d 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/util/SysWaterMarkUtil.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/util/SysWaterMarkUtil.java @@ -1,8 +1,12 @@ package com.jero.modules.system.util; +import com.jero.common.constant.CommonConstant; +import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.system.util.JwtUtil; import com.jero.common.system.vo.LoginUser; import com.jero.common.util.DateUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; @@ -11,11 +15,13 @@ import org.apache.pdfbox.pdmodel.font.PDType0Font; import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState; import org.apache.pdfbox.pdmodel.graphics.state.RenderingMode; import org.apache.pdfbox.util.Matrix; -import org.apache.shiro.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.awt.*; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -66,11 +72,16 @@ public class SysWaterMarkUtil { private float marginTop; @Value("${watermark.dateFormat}") private String dateFormat; + @Resource + private ISysBaseAPI sysBaseAPI; - - public List getWaterMarkConfig() { - LoginUser loginUser = UserUtils.getLoginUser(); - + public List getWaterMarkConfig(HttpServletRequest request) { + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); + LoginUser loginUser = null; + if (StringUtils.isNotBlank(token)){ + String username = JwtUtil.getUsername(token); + loginUser = sysBaseAPI.getUserByName(username); + } Date curDate = new Date(); String cudDateStr = DateUtils.date2Str(curDate, new SimpleDateFormat(dateFormat)); List result = new ArrayList<>(); @@ -84,8 +95,8 @@ public class SysWaterMarkUtil { return result; } - public synchronized InputStream addWatermarkToPdf(InputStream inputStream) throws IOException { - List watermarkText = getWaterMarkConfig(); + public synchronized InputStream addWatermarkToPdf(InputStream inputStream, HttpServletRequest request) throws IOException { + List watermarkText = getWaterMarkConfig(request); PDDocument document = PDDocument.load(inputStream); document.setAllSecurityToBeRemoved(true); // 加载水印字体