feat: 企标带文件导出PDF文件先解密后加水印再加密

This commit is contained in:
2024-05-11 14:21:26 +08:00
parent a985191bdc
commit aad080b900
4 changed files with 68 additions and 7 deletions
@@ -2,6 +2,8 @@ package com.jero.modules.system.util;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.DateUtils;
import com.jero.common.util.IntekeyUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
@@ -13,14 +15,10 @@ import org.apache.pdfbox.util.Matrix;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.awt.*;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
@@ -30,6 +28,7 @@ import java.util.Date;
* @author CaiHaohan
*/
@Component
@Slf4j
public class SysWaterMarkUtil {
@Value("${watermark.font-size}")
@@ -63,6 +62,8 @@ public class SysWaterMarkUtil {
@Value("${watermark.margin.top}")
private float marginTop;
@Value("#{'${download.enable}'}")
private boolean enable;
public List<String> getWaterMarkConfig() {
LoginUser loginUser = UserUtils.getLoginUser();
@@ -79,6 +80,9 @@ public class SysWaterMarkUtil {
public synchronized InputStream addWatermarkToPdf(InputStream inputStream) throws IOException {
List<String> watermarkText = getWaterMarkConfig();
if (enable) {
inputStream = IntekeyUtils.autoDecryptInputStreamFile(inputStream, "test.pdf");
}
PDDocument document = PDDocument.load(inputStream);
document.setAllSecurityToBeRemoved(true);
// 加载水印字体