update 下载pdf增加水印

This commit is contained in:
lijiarao
2024-09-11 17:39:30 +08:00
parent 6b7cae0399
commit 7b570451b9
2 changed files with 20 additions and 10 deletions
@@ -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();
@@ -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<String> getWaterMarkConfig() {
LoginUser loginUser = UserUtils.getLoginUser();
public List<String> 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<String> result = new ArrayList<>();
@@ -84,8 +95,8 @@ public class SysWaterMarkUtil {
return result;
}
public synchronized InputStream addWatermarkToPdf(InputStream inputStream) throws IOException {
List<String> watermarkText = getWaterMarkConfig();
public synchronized InputStream addWatermarkToPdf(InputStream inputStream, HttpServletRequest request) throws IOException {
List<String> watermarkText = getWaterMarkConfig(request);
PDDocument document = PDDocument.load(inputStream);
document.setAllSecurityToBeRemoved(true);
// 加载水印字体