fix pdf加水印前先解密

This commit is contained in:
lijiarao
2024-04-25 11:43:57 +08:00
parent f0eb89f729
commit f5c747e0d1
@@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.util.IntekeyUtils;
import com.jero.common.util.MinioUtil; import com.jero.common.util.MinioUtil;
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService; import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
@@ -13,15 +14,19 @@ import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.system.util.SysWaterMarkUtil; import com.jero.modules.system.util.SysWaterMarkUtil;
import com.jero.modules.system.util.UserUtils; import com.jero.modules.system.util.UserUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.http.entity.ContentType;
import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ClassPathResource;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
@@ -143,14 +148,16 @@ public class SysCommonController {
// 设置强制下载不打开 // 设置强制下载不打开
response.setContentType("application/force-download"); response.setContentType("application/force-download");
// 然后在您的controller方法中: // 然后在您的controller方法中:
InputStream watermarkedInputStream = null;
if ("pdf".equalsIgnoreCase(FileUtil.extName(fileName))) { if ("pdf".equalsIgnoreCase(FileUtil.extName(fileName))) {
try (InputStream originalInputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), url); try (InputStream originalInputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), url);
InputStream watermarkedInputStream = sysWaterMarkUtil.addWatermarkToPdf(originalInputStream);
OutputStream outputStream = response.getOutputStream()) { OutputStream outputStream = response.getOutputStream()) {
if (originalInputStream == null) { if (originalInputStream == null) {
return; return;
} }
MultipartFile mFile = new MockMultipartFile(fileName, fileName, ContentType.APPLICATION_OCTET_STREAM.toString(), originalInputStream);
InputStream inputStream = IntekeyUtils.getInputStreamByDecryptFile(mFile);
watermarkedInputStream = sysWaterMarkUtil.addWatermarkToPdf(inputStream);
byte[] buf = new byte[1024]; byte[] buf = new byte[1024];
int len; int len;
@@ -160,8 +167,16 @@ public class SysCommonController {
response.flushBuffer(); response.flushBuffer();
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage()); log.error("error:",e);
response.setStatus(404); response.setStatus(404);
}finally {
try {
if (watermarkedInputStream != null){
watermarkedInputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
} }
} else { } else {
try (InputStream inputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), url); try (InputStream inputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), url);