feat: 将水印的相关设置提出到配置文件
This commit is contained in:
+18
-2
@@ -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.PDExtendedGraphicsState;
|
||||||
import org.apache.pdfbox.pdmodel.graphics.state.RenderingMode;
|
import org.apache.pdfbox.pdmodel.graphics.state.RenderingMode;
|
||||||
import org.apache.pdfbox.util.Matrix;
|
import org.apache.pdfbox.util.Matrix;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -31,6 +32,21 @@ import java.time.format.DateTimeFormatter;
|
|||||||
@Component
|
@Component
|
||||||
public class SysWaterMarkUtil {
|
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() {
|
public String getWaterMarkConfig() {
|
||||||
LoginUser loginUser = UserUtils.getLoginUser();
|
LoginUser loginUser = UserUtils.getLoginUser();
|
||||||
if (loginUser == null) {
|
if (loginUser == null) {
|
||||||
@@ -46,8 +62,8 @@ public class SysWaterMarkUtil {
|
|||||||
// 设置水印字体、字体大小、颜色和透明度
|
// 设置水印字体、字体大小、颜色和透明度
|
||||||
ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf");
|
ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf");
|
||||||
PDType0Font font = PDType0Font.load(document, fontResource.getInputStream());
|
PDType0Font font = PDType0Font.load(document, fontResource.getInputStream());
|
||||||
float fontSize = 13.0f;
|
float fontSize = this.fontSize;
|
||||||
Color color = new Color(180, 180, 180, 1);
|
Color color = new Color(r, g, b, a);
|
||||||
PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
|
PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
|
||||||
graphicsState.setNonStrokingAlphaConstant(0.4f);
|
graphicsState.setNonStrokingAlphaConstant(0.4f);
|
||||||
graphicsState.setStrokingAlphaConstant(0.4f);
|
graphicsState.setStrokingAlphaConstant(0.4f);
|
||||||
|
|||||||
+24
-19
@@ -1,7 +1,7 @@
|
|||||||
package com.jero.modules.laws.enterprise.util;
|
package com.jero.modules.laws.enterprise.util;
|
||||||
|
|
||||||
import com.jero.modules.system.entity.SysUser;
|
import com.jero.common.system.vo.LoginUser;
|
||||||
import com.jero.modules.system.service.ISysUserService;
|
import com.jero.modules.system.util.UserUtils;
|
||||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||||
import org.apache.pdfbox.pdmodel.PDPage;
|
import org.apache.pdfbox.pdmodel.PDPage;
|
||||||
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
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.PDExtendedGraphicsState;
|
||||||
import org.apache.pdfbox.pdmodel.graphics.state.RenderingMode;
|
import org.apache.pdfbox.pdmodel.graphics.state.RenderingMode;
|
||||||
import org.apache.pdfbox.util.Matrix;
|
import org.apache.pdfbox.util.Matrix;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import com.jero.modules.sys.utils.UserUtils;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 水印工具类
|
* 水印工具类
|
||||||
@@ -27,18 +24,27 @@ import java.time.format.DateTimeFormatter;
|
|||||||
@Component
|
@Component
|
||||||
public class WaterMarkUtil {
|
public class WaterMarkUtil {
|
||||||
|
|
||||||
@Resource
|
@Value("${watermark.font-size}")
|
||||||
private ISysUserService userEoService;
|
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() {
|
public String getWaterMarkConfig() {
|
||||||
LocalDate currentDate = LocalDate.now();
|
LoginUser loginUser = UserUtils.getLoginUser();
|
||||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
|
if (loginUser == null) {
|
||||||
String formattedDate = currentDate.format(formatter);
|
return "";
|
||||||
|
}
|
||||||
SysUser user = userEoService.getById(UserUtils.getUserId());
|
return loginUser.getUsername() + loginUser.getRealname();
|
||||||
String userName = user.calcNameWorkNo();
|
|
||||||
|
|
||||||
return userName + " " + formattedDate;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized InputStream addWatermarkToPdf(InputStream inputStream) throws IOException {
|
public synchronized InputStream addWatermarkToPdf(InputStream inputStream) throws IOException {
|
||||||
@@ -48,8 +54,8 @@ public class WaterMarkUtil {
|
|||||||
// 设置水印字体、字体大小、颜色和透明度
|
// 设置水印字体、字体大小、颜色和透明度
|
||||||
ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf");
|
ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf");
|
||||||
PDType0Font font = PDType0Font.load(document, fontResource.getInputStream());
|
PDType0Font font = PDType0Font.load(document, fontResource.getInputStream());
|
||||||
float fontSize = 13.0f;
|
float fontSize = this.fontSize;
|
||||||
Color color = new Color(100, 100, 100, 0);
|
Color color = new Color(r, g, b, a);
|
||||||
PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
|
PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
|
||||||
graphicsState.setNonStrokingAlphaConstant(0.4f);
|
graphicsState.setNonStrokingAlphaConstant(0.4f);
|
||||||
graphicsState.setStrokingAlphaConstant(0.4f);
|
graphicsState.setStrokingAlphaConstant(0.4f);
|
||||||
@@ -88,5 +94,4 @@ public class WaterMarkUtil {
|
|||||||
// 将ByteArrayOutputStream转换为ByteArrayInputStream以供返回
|
// 将ByteArrayOutputStream转换为ByteArrayInputStream以供返回
|
||||||
return new ByteArrayInputStream(baos.toByteArray());
|
return new ByteArrayInputStream(baos.toByteArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -456,3 +456,12 @@ download:
|
|||||||
scope_dev: 51
|
scope_dev: 51
|
||||||
# 办公域
|
# 办公域
|
||||||
scope_work: 52
|
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_dev: 51
|
||||||
# 办公域
|
# 办公域
|
||||||
scope_work: 52
|
scope_work: 52
|
||||||
|
|
||||||
|
# 水印配置项
|
||||||
|
watermark:
|
||||||
|
font-size: 13.0
|
||||||
|
color:
|
||||||
|
r: 180
|
||||||
|
g: 180
|
||||||
|
b: 180
|
||||||
|
a: 1
|
||||||
@@ -430,3 +430,12 @@ download:
|
|||||||
scope_dev: 51
|
scope_dev: 51
|
||||||
# 办公域
|
# 办公域
|
||||||
scope_work: 52
|
scope_work: 52
|
||||||
|
|
||||||
|
# 水印配置项
|
||||||
|
watermark:
|
||||||
|
font-size: 13.0
|
||||||
|
color:
|
||||||
|
r: 180
|
||||||
|
g: 180
|
||||||
|
b: 180
|
||||||
|
a: 1
|
||||||
Reference in New Issue
Block a user