feat: 将水印的相关设置提出到配置文件

This commit is contained in:
2024-01-02 15:00:51 +08:00
parent 075759998f
commit 253d5aa7b6
5 changed files with 71 additions and 23 deletions
@@ -11,6 +11,7 @@ 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;
@@ -31,6 +32,21 @@ import java.time.format.DateTimeFormatter;
@Component
public class SysWaterMarkUtil {
@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;
public String getWaterMarkConfig() {
LoginUser loginUser = UserUtils.getLoginUser();
if (loginUser == null) {
@@ -46,8 +62,8 @@ public class SysWaterMarkUtil {
// 设置水印字体、字体大小、颜色和透明度
ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf");
PDType0Font font = PDType0Font.load(document, fontResource.getInputStream());
float fontSize = 13.0f;
Color color = new Color(180, 180, 180, 1);
float fontSize = this.fontSize;
Color color = new Color(r, g, b, a);
PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
graphicsState.setNonStrokingAlphaConstant(0.4f);
graphicsState.setStrokingAlphaConstant(0.4f);
@@ -1,7 +1,7 @@
package com.jero.modules.laws.enterprise.util;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.common.system.vo.LoginUser;
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;
@@ -10,15 +10,12 @@ 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 com.jero.modules.sys.utils.UserUtils;
import javax.annotation.Resource;
import java.awt.*;
import java.io.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
/**
* 水印工具类
@@ -26,19 +23,28 @@ import java.time.format.DateTimeFormatter;
*/
@Component
public class WaterMarkUtil {
@Resource
private ISysUserService userEoService;
@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;
public String getWaterMarkConfig() {
LocalDate currentDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String formattedDate = currentDate.format(formatter);
SysUser user = userEoService.getById(UserUtils.getUserId());
String userName = user.calcNameWorkNo();
return userName + " " + formattedDate;
LoginUser loginUser = UserUtils.getLoginUser();
if (loginUser == null) {
return "";
}
return loginUser.getUsername() + loginUser.getRealname();
}
public synchronized InputStream addWatermarkToPdf(InputStream inputStream) throws IOException {
@@ -48,8 +54,8 @@ public class WaterMarkUtil {
// 设置水印字体、字体大小、颜色和透明度
ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf");
PDType0Font font = PDType0Font.load(document, fontResource.getInputStream());
float fontSize = 13.0f;
Color color = new Color(100, 100, 100, 0);
float fontSize = this.fontSize;
Color color = new Color(r, g, b, a);
PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
graphicsState.setNonStrokingAlphaConstant(0.4f);
graphicsState.setStrokingAlphaConstant(0.4f);
@@ -88,5 +94,4 @@ public class WaterMarkUtil {
// 将ByteArrayOutputStream转换为ByteArrayInputStream以供返回
return new ByteArrayInputStream(baos.toByteArray());
}
}
@@ -456,3 +456,12 @@ download:
scope_dev: 51
# 办公域
scope_work: 52
# 水印配置项
watermark:
font-size: 13.0
color:
r: 180
g: 180
b: 180
a: 1
@@ -429,3 +429,12 @@ download:
scope_dev: 51
# 办公域
scope_work: 52
# 水印配置项
watermark:
font-size: 13.0
color:
r: 180
g: 180
b: 180
a: 1
@@ -429,4 +429,13 @@ download:
# 研发域
scope_dev: 51
# 办公域
scope_work: 52
scope_work: 52
# 水印配置项
watermark:
font-size: 13.0
color:
r: 180
g: 180
b: 180
a: 1