feat: 水印支持页边距控制
This commit is contained in:
@@ -57,6 +57,13 @@ public class SysWaterMarkUtil {
|
|||||||
private int degree;
|
private int degree;
|
||||||
|
|
||||||
|
|
||||||
|
@Value("${watermark.margin.left}")
|
||||||
|
private float marginLeft;
|
||||||
|
|
||||||
|
@Value("${watermark.margin.top}")
|
||||||
|
private float marginTop;
|
||||||
|
|
||||||
|
|
||||||
public List<String> getWaterMarkConfig() {
|
public List<String> getWaterMarkConfig() {
|
||||||
LoginUser loginUser = UserUtils.getLoginUser();
|
LoginUser loginUser = UserUtils.getLoginUser();
|
||||||
if (loginUser == null) {
|
if (loginUser == null) {
|
||||||
@@ -104,8 +111,8 @@ public class SysWaterMarkUtil {
|
|||||||
// 计算两行文本的总高度
|
// 计算两行文本的总高度
|
||||||
float totalTextHeight = (dynamicFontSize + lineSpacing) * (watermarkText.size() - 1);
|
float totalTextHeight = (dynamicFontSize + lineSpacing) * (watermarkText.size() - 1);
|
||||||
|
|
||||||
for (float xPosition = pageSize.getLowerLeftX(); xPosition <= pageWidth; xPosition += xStep) {
|
for (float xPosition = pageSize.getLowerLeftX() + marginLeft; xPosition <= pageWidth - marginLeft; xPosition += xStep) {
|
||||||
for (float yPosition = pageSize.getLowerLeftY(); yPosition <= pageHeight; yPosition += yStep) {
|
for (float yPosition = pageSize.getLowerLeftY() + marginTop; yPosition <= pageHeight - marginTop; yPosition += yStep) {
|
||||||
try (PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true)) {
|
try (PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true)) {
|
||||||
contentStream.setGraphicsStateParameters(graphicsState);
|
contentStream.setGraphicsStateParameters(graphicsState);
|
||||||
contentStream.setNonStrokingColor(color);
|
contentStream.setNonStrokingColor(color);
|
||||||
|
|||||||
+1
-15
@@ -1,22 +1,18 @@
|
|||||||
package com.jero.modules.laws.common.controller;
|
package com.jero.modules.laws.common.controller;
|
||||||
|
|
||||||
import cn.hutool.core.io.FileUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.jero.common.api.vo.Result;
|
import com.jero.common.api.vo.Result;
|
||||||
import com.jero.common.aspect.annotation.DictPoint;
|
import com.jero.common.aspect.annotation.DictPoint;
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.common.util.MessageUtils;
|
import com.jero.common.util.MessageUtils;
|
||||||
import com.jero.common.util.MinioUtil;
|
|
||||||
import com.jero.common.api.vo.ResultCommon;
|
import com.jero.common.api.vo.ResultCommon;
|
||||||
import com.jero.modules.laws.common.service.ILawsCommonService;
|
import com.jero.modules.laws.common.service.ILawsCommonService;
|
||||||
import com.jero.modules.laws.common.vo.LawsDictModel;
|
import com.jero.modules.laws.common.vo.LawsDictModel;
|
||||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
|
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
|
||||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
|
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
|
||||||
import com.jero.modules.laws.enterprise.util.WaterMarkUtil;
|
|
||||||
import com.jero.modules.oss.entity.OSSFile;
|
|
||||||
import com.jero.modules.oss.service.IOSSFileService;
|
import com.jero.modules.oss.service.IOSSFileService;
|
||||||
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
||||||
|
import com.jero.modules.system.util.SysWaterMarkUtil;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -25,10 +21,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -45,12 +37,6 @@ public class LawsCommonController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ILawsCommonService lawsCommonService;
|
private ILawsCommonService lawsCommonService;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private WaterMarkUtil waterMarkUtil;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private IOSSFileService ossFileService;
|
|
||||||
|
|
||||||
@ApiOperation(value="多选标准弹框", notes="多选标准弹框")
|
@ApiOperation(value="多选标准弹框", notes="多选标准弹框")
|
||||||
@GetMapping(value = "/getManyStandardSelectionBox")
|
@GetMapping(value = "/getManyStandardSelectionBox")
|
||||||
public Result<IPage<ManyStandardSelectionBox>> getManyStandardSelectionBox(ManyStandardSelectionBoxVO selectionBoxVO,
|
public Result<IPage<ManyStandardSelectionBox>> getManyStandardSelectionBox(ManyStandardSelectionBoxVO selectionBoxVO,
|
||||||
|
|||||||
+3
-6
@@ -23,16 +23,13 @@ import com.jero.modules.laws.common.util.ImportUtil;
|
|||||||
import com.jero.modules.laws.common.vo.LawsDictModel;
|
import com.jero.modules.laws.common.vo.LawsDictModel;
|
||||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
|
import com.jero.modules.laws.common.vo.ManyStandardSelectionBox;
|
||||||
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
|
import com.jero.modules.laws.common.vo.ManyStandardSelectionBoxVO;
|
||||||
import com.jero.modules.laws.documenttool.entity.SarFileSplitMenu;
|
|
||||||
import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper;
|
import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper;
|
||||||
import com.jero.modules.laws.documenttool.service.IDocumentSplitService;
|
|
||||||
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept;
|
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardAuthDept;
|
||||||
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectContent;
|
import com.jero.modules.laws.enterprise.entity.EnterpriseStandardInspectContent;
|
||||||
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthDeptService;
|
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthDeptService;
|
||||||
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService;
|
import com.jero.modules.laws.enterprise.service.EnterpriseStandardAuthUserService;
|
||||||
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectContentService;
|
import com.jero.modules.laws.enterprise.service.EnterpriseStandardInspectContentService;
|
||||||
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
|
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
|
||||||
import com.jero.modules.laws.enterprise.util.WaterMarkUtil;
|
|
||||||
import com.jero.modules.laws.home.common.LawsHomeSearchCommon;
|
import com.jero.modules.laws.home.common.LawsHomeSearchCommon;
|
||||||
import com.jero.modules.laws.home.service.ILawsHomeSearchService;
|
import com.jero.modules.laws.home.service.ILawsHomeSearchService;
|
||||||
import com.jero.modules.laws.standard.entity.*;
|
import com.jero.modules.laws.standard.entity.*;
|
||||||
@@ -48,13 +45,13 @@ import com.jero.modules.personal.service.ILawsStandardCollectionService;
|
|||||||
import com.jero.modules.split.common.FileUnZip;
|
import com.jero.modules.split.common.FileUnZip;
|
||||||
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
||||||
import com.jero.modules.split.service.ISarFileSplitInfoService;
|
import com.jero.modules.split.service.ISarFileSplitInfoService;
|
||||||
import com.jero.modules.sys.utils.UserUtils;
|
|
||||||
import com.jero.modules.system.entity.SysDepart;
|
import com.jero.modules.system.entity.SysDepart;
|
||||||
import com.jero.modules.system.entity.SysDictItem;
|
import com.jero.modules.system.entity.SysDictItem;
|
||||||
import com.jero.modules.system.entity.SysUser;
|
import com.jero.modules.system.entity.SysUser;
|
||||||
import com.jero.modules.system.service.ISysDepartService;
|
import com.jero.modules.system.service.ISysDepartService;
|
||||||
import com.jero.modules.system.service.ISysDictItemService;
|
import com.jero.modules.system.service.ISysDictItemService;
|
||||||
import com.jero.modules.system.service.ISysUserService;
|
import com.jero.modules.system.service.ISysUserService;
|
||||||
|
import com.jero.modules.system.util.SysWaterMarkUtil;
|
||||||
import com.jero.modules.tag.entity.LawsArea;
|
import com.jero.modules.tag.entity.LawsArea;
|
||||||
import com.jero.modules.tag.entity.LawsTag;
|
import com.jero.modules.tag.entity.LawsTag;
|
||||||
import com.jero.modules.tag.enums.FieldShowTypeEnum;
|
import com.jero.modules.tag.enums.FieldShowTypeEnum;
|
||||||
@@ -143,7 +140,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
@Resource
|
@Resource
|
||||||
private EnterpriseStandardAuthUserService esAuthUserService;
|
private EnterpriseStandardAuthUserService esAuthUserService;
|
||||||
@Resource
|
@Resource
|
||||||
private WaterMarkUtil waterMarkUtil;
|
private SysWaterMarkUtil sysWaterMarkUtil;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISarFileSplitInfoService sarFileSplitInfoService;
|
private ISarFileSplitInfoService sarFileSplitInfoService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -2253,7 +2250,7 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
|
|||||||
if ("pdf".equalsIgnoreCase(FileUtil.extName(fileName))) {
|
if ("pdf".equalsIgnoreCase(FileUtil.extName(fileName))) {
|
||||||
// 如果是PDF文件, 添加水印
|
// 如果是PDF文件, 添加水印
|
||||||
try (InputStream originalInputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), url);
|
try (InputStream originalInputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), url);
|
||||||
InputStream watermarkedInputStream = waterMarkUtil.addWatermarkToPdf(originalInputStream)) {
|
InputStream watermarkedInputStream = sysWaterMarkUtil.addWatermarkToPdf(originalInputStream)) {
|
||||||
|
|
||||||
if (originalInputStream == null) {
|
if (originalInputStream == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
+3
-3
@@ -20,9 +20,9 @@ import com.jero.modules.laws.enterprise.entity.vo.EnterpriseStandardDeclareVo;
|
|||||||
import com.jero.modules.laws.enterprise.mapper.EnterpriseStandardDeclareMapper;
|
import com.jero.modules.laws.enterprise.mapper.EnterpriseStandardDeclareMapper;
|
||||||
import com.jero.modules.laws.enterprise.service.EnterpriseStandardDeclareService;
|
import com.jero.modules.laws.enterprise.service.EnterpriseStandardDeclareService;
|
||||||
import com.jero.modules.laws.enterprise.util.BeanCopyUtils;
|
import com.jero.modules.laws.enterprise.util.BeanCopyUtils;
|
||||||
import com.jero.modules.laws.enterprise.util.WaterMarkUtil;
|
|
||||||
import com.jero.modules.oss.entity.OSSFile;
|
import com.jero.modules.oss.entity.OSSFile;
|
||||||
import com.jero.modules.oss.service.IOSSFileService;
|
import com.jero.modules.oss.service.IOSSFileService;
|
||||||
|
import com.jero.modules.system.util.SysWaterMarkUtil;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.usermodel.*;
|
||||||
@@ -63,7 +63,7 @@ public class EnterpriseStandardDeclareServiceImpl extends ServiceImpl<Enterprise
|
|||||||
@Resource
|
@Resource
|
||||||
private ILawsCommonService lawsCommonService;
|
private ILawsCommonService lawsCommonService;
|
||||||
@Resource
|
@Resource
|
||||||
private WaterMarkUtil waterMarkUtil;
|
private SysWaterMarkUtil sysWaterMarkUtil;
|
||||||
|
|
||||||
@Value("${jero.path.exportExcelTempPath}")
|
@Value("${jero.path.exportExcelTempPath}")
|
||||||
private String exportExcelTempPath;
|
private String exportExcelTempPath;
|
||||||
@@ -263,7 +263,7 @@ public class EnterpriseStandardDeclareServiceImpl extends ServiceImpl<Enterprise
|
|||||||
InputStream inputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), ossFile.getUrl());
|
InputStream inputStream = MinioUtil.getMinioFile(MinioUtil.getBucketName(), ossFile.getUrl());
|
||||||
// pdf加水印
|
// pdf加水印
|
||||||
if (StringUtils.endsWithIgnoreCase(ossFile.getFileName(), ".pdf")){
|
if (StringUtils.endsWithIgnoreCase(ossFile.getFileName(), ".pdf")){
|
||||||
inputStream = waterMarkUtil.addWatermarkToPdf(inputStream);
|
inputStream = sysWaterMarkUtil.addWatermarkToPdf(inputStream);
|
||||||
}
|
}
|
||||||
// 导出文件
|
// 导出文件
|
||||||
String filePath = url + File.separator + ossFile.getFileName();
|
String filePath = url + File.separator + ossFile.getFileName();
|
||||||
|
|||||||
@@ -1,140 +0,0 @@
|
|||||||
package com.jero.modules.laws.enterprise.util;
|
|
||||||
|
|
||||||
import com.jero.common.system.vo.LoginUser;
|
|
||||||
import com.jero.common.util.DateUtils;
|
|
||||||
import com.jero.modules.system.util.UserUtils;
|
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
|
||||||
import org.apache.pdfbox.pdmodel.PDPage;
|
|
||||||
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
|
||||||
import org.apache.pdfbox.pdmodel.common.PDRectangle;
|
|
||||||
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.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.core.io.ClassPathResource;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 水印工具类
|
|
||||||
*
|
|
||||||
* @author CaiHaohan
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
public class WaterMarkUtil {
|
|
||||||
|
|
||||||
@Value("${watermark.font-size}")
|
|
||||||
private float fontSize;
|
|
||||||
|
|
||||||
@Value("${watermark.color.r}")
|
|
||||||
private int r;
|
|
||||||
|
|
||||||
@Value("${watermark.color.g}")
|
|
||||||
private int g;
|
|
||||||
|
|
||||||
@Value("${watermark.color.b}")
|
|
||||||
private int b;
|
|
||||||
|
|
||||||
@Value("${watermark.color.a}")
|
|
||||||
private int a;
|
|
||||||
|
|
||||||
@Value("${watermark.lineNumPerPage}")
|
|
||||||
private int lineNumPerPage;
|
|
||||||
|
|
||||||
@Value("${watermark.columnNumPerPage}")
|
|
||||||
private int columnNumPerPage;
|
|
||||||
|
|
||||||
@Value("${watermark.degree}")
|
|
||||||
private int degree;
|
|
||||||
|
|
||||||
|
|
||||||
public List<String> getWaterMarkConfig() {
|
|
||||||
LoginUser loginUser = UserUtils.getLoginUser();
|
|
||||||
if (loginUser == null) {
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
Date curDate = new Date();
|
|
||||||
String cudDateStr = DateUtils.date2Str(curDate, new SimpleDateFormat("yyyyMMddHHmmss"));
|
|
||||||
List<String> result = new ArrayList<>();
|
|
||||||
result.add(loginUser.getUsername() + " " + loginUser.getRealname());
|
|
||||||
result.add(cudDateStr);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized InputStream addWatermarkToPdf(InputStream inputStream) throws IOException {
|
|
||||||
List<String> watermarkText = getWaterMarkConfig();
|
|
||||||
PDDocument document = PDDocument.load(inputStream);
|
|
||||||
|
|
||||||
// 加载水印字体
|
|
||||||
ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf");
|
|
||||||
PDType0Font font = PDType0Font.load(document, fontResource.getInputStream());
|
|
||||||
|
|
||||||
// 设置水印颜色和透明度
|
|
||||||
Color color = new Color(r, g, b, a);
|
|
||||||
PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
|
|
||||||
graphicsState.setNonStrokingAlphaConstant(0.4f);
|
|
||||||
graphicsState.setStrokingAlphaConstant(0.4f);
|
|
||||||
|
|
||||||
// 遍历每一页并添加水印
|
|
||||||
for (PDPage page : document.getPages()) {
|
|
||||||
// 获取页面尺寸以计算水印位置和大小
|
|
||||||
PDRectangle pageSize = page.getMediaBox();
|
|
||||||
float pageWidth = pageSize.getWidth();
|
|
||||||
float pageHeight = pageSize.getHeight();
|
|
||||||
|
|
||||||
// 根据页面宽度动态调整字体大小
|
|
||||||
float dynamicFontSize = pageWidth * (this.fontSize / 595); // 假设基准页面宽度为595单位
|
|
||||||
|
|
||||||
float xStep = pageWidth / columnNumPerPage;
|
|
||||||
float yStep = pageHeight / lineNumPerPage;
|
|
||||||
float rotationInRadians = (float) Math.toRadians(degree);
|
|
||||||
|
|
||||||
// 行间距,设为字体大小的一半
|
|
||||||
float lineSpacing = dynamicFontSize / 2;
|
|
||||||
|
|
||||||
// 计算两行文本的总高度
|
|
||||||
float totalTextHeight = (dynamicFontSize + lineSpacing) * (watermarkText.size() - 1);
|
|
||||||
|
|
||||||
for (float xPosition = pageSize.getLowerLeftX(); xPosition <= pageWidth; xPosition += xStep) {
|
|
||||||
for (float yPosition = pageSize.getLowerLeftY(); yPosition <= pageHeight; yPosition += yStep) {
|
|
||||||
try (PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true)) {
|
|
||||||
contentStream.setGraphicsStateParameters(graphicsState);
|
|
||||||
contentStream.setNonStrokingColor(color);
|
|
||||||
|
|
||||||
float textYPosition = yPosition + (totalTextHeight / 2);
|
|
||||||
|
|
||||||
for (String line : watermarkText) {
|
|
||||||
contentStream.beginText();
|
|
||||||
contentStream.setFont(font, dynamicFontSize);
|
|
||||||
contentStream.setRenderingMode(RenderingMode.FILL);
|
|
||||||
contentStream.setTextMatrix(Matrix.getRotateInstance(rotationInRadians, xPosition, textYPosition));
|
|
||||||
contentStream.showText(line);
|
|
||||||
contentStream.endText();
|
|
||||||
|
|
||||||
// 更新文本的Y坐标,为下一行准备
|
|
||||||
textYPosition -= (dynamicFontSize + lineSpacing);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建一个临时的ByteArrayOutputStream保存修改过的PDF
|
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
||||||
document.save(baos);
|
|
||||||
document.close();
|
|
||||||
|
|
||||||
// 将ByteArrayOutputStream转换为ByteArrayInputStream以供返回
|
|
||||||
return new ByteArrayInputStream(baos.toByteArray());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,11 +6,11 @@ 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.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.enterprise.util.WaterMarkUtil;
|
|
||||||
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
||||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
||||||
import com.jero.modules.oss.entity.OSSFile;
|
import com.jero.modules.oss.entity.OSSFile;
|
||||||
import com.jero.modules.oss.service.IOSSFileService;
|
import com.jero.modules.oss.service.IOSSFileService;
|
||||||
|
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.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
@@ -36,7 +36,7 @@ import java.nio.charset.StandardCharsets;
|
|||||||
public class SysCommonController {
|
public class SysCommonController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private WaterMarkUtil waterMarkUtil;
|
private SysWaterMarkUtil sysWaterMarkUtil;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IOSSFileService ossFileService;
|
private IOSSFileService ossFileService;
|
||||||
@@ -120,7 +120,7 @@ public class SysCommonController {
|
|||||||
// 然后在您的controller方法中:
|
// 然后在您的controller方法中:
|
||||||
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 = waterMarkUtil.addWatermarkToPdf(originalInputStream);
|
InputStream watermarkedInputStream = sysWaterMarkUtil.addWatermarkToPdf(originalInputStream);
|
||||||
OutputStream outputStream = response.getOutputStream()) {
|
OutputStream outputStream = response.getOutputStream()) {
|
||||||
|
|
||||||
if (originalInputStream == null) {
|
if (originalInputStream == null) {
|
||||||
|
|||||||
@@ -463,7 +463,7 @@ watermark:
|
|||||||
# 每页几行
|
# 每页几行
|
||||||
lineNumPerPage: 8
|
lineNumPerPage: 8
|
||||||
# 每页几列
|
# 每页几列
|
||||||
columnNumPerPage: 2
|
columnNumPerPage: 3
|
||||||
# 倾斜角度
|
# 倾斜角度
|
||||||
degree: 30
|
degree: 30
|
||||||
# 颜色
|
# 颜色
|
||||||
@@ -471,4 +471,8 @@ watermark:
|
|||||||
r: 180
|
r: 180
|
||||||
g: 180
|
g: 180
|
||||||
b: 180
|
b: 180
|
||||||
a: 1
|
a: 1
|
||||||
|
# 页边距
|
||||||
|
margin:
|
||||||
|
top: 100
|
||||||
|
left: 50
|
||||||
|
|||||||
Reference in New Issue
Block a user