diff --git a/byd-structuredplugins-serve/laws-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java b/byd-structuredplugins-serve/laws-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java index e8a8f3b..cf8276c 100644 --- a/byd-structuredplugins-serve/laws-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java +++ b/byd-structuredplugins-serve/laws-module-system/src/main/java/com/jero/modules/system/controller/CommonController.java @@ -12,7 +12,6 @@ import com.jero.common.system.api.ISysBaseAPI; import com.jero.common.util.*; import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.service.IOSSFileService; -import com.jero.modules.system.util.SysWaterMarkUtil; import com.jero.modules.system.util.UserUtils; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -55,9 +54,6 @@ public class CommonController { @Resource private IOSSFileService ossFileService; - @Resource - private SysWaterMarkUtil sysWaterMarkUtil; - @Value(value = "${jero.path.upload}") private String uploadpath; diff --git a/byd-structuredplugins-serve/laws-module-system/src/main/java/com/jero/modules/system/util/SysWaterMarkUtil.java b/byd-structuredplugins-serve/laws-module-system/src/main/java/com/jero/modules/system/util/SysWaterMarkUtil.java deleted file mode 100644 index 34ecab9..0000000 --- a/byd-structuredplugins-serve/laws-module-system/src/main/java/com/jero/modules/system/util/SysWaterMarkUtil.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.jero.modules.system.util; - -import com.jero.common.system.vo.LoginUser; -import com.jero.common.util.DateUtils; -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 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; - - @Value("${watermark.lineNumPerPage}") - private int lineNumPerPage; - - @Value("${watermark.columnNumPerPage}") - private int columnNumPerPage; - - @Value("${watermark.degree}") - private int degree; - - - @Value("${watermark.margin.left}") - private float marginLeft; - - @Value("${watermark.margin.top}") - private float marginTop; - - - public List getWaterMarkConfig() { - LoginUser loginUser = UserUtils.getLoginUser(); - if (loginUser == null) { - return new ArrayList<>(); - } - Date curDate = new Date(); - String cudDateStr = DateUtils.date2Str(curDate, new SimpleDateFormat("yyyyMMddHHmmss")); - List result = new ArrayList<>(); - result.add(loginUser.getUsername() + " " + loginUser.getRealname()); - result.add(cudDateStr); - return result; - } - - public synchronized InputStream addWatermarkToPdf(InputStream inputStream) throws IOException { - List 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() + marginLeft; xPosition <= pageWidth - marginLeft; xPosition += xStep) { - for (float yPosition = pageSize.getLowerLeftY() + marginTop; yPosition <= pageHeight - marginTop; 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()); - } -} diff --git a/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/sys/controller/SysCommonController.java b/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/sys/controller/SysCommonController.java index 2261731..9f97fa4 100644 --- a/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/sys/controller/SysCommonController.java +++ b/byd-structuredplugins-serve/laws-modules/src/main/java/com/jero/modules/sys/controller/SysCommonController.java @@ -1,7 +1,6 @@ package com.jero.modules.sys.controller; import com.jero.modules.oss.service.IOSSFileService; -import com.jero.modules.system.util.SysWaterMarkUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,9 +16,6 @@ import javax.annotation.Resource; @RequestMapping("/sys/common") public class SysCommonController { - @Resource - private SysWaterMarkUtil sysWaterMarkUtil; - @Resource private IOSSFileService ossFileService; diff --git a/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-dev.yml b/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-dev.yml index 7bfc644..2d4ba31 100644 --- a/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-dev.yml +++ b/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-dev.yml @@ -406,26 +406,6 @@ download: # 办公域 scope_work: 52 -# 水印配置项 -watermark: - font-size: 13.0 - # 每页几行 - lineNumPerPage: 8 - # 每页几列 - columnNumPerPage: 3 - # 倾斜角度 - degree: 30 - # 颜色 - color: - r: 180 - g: 180 - b: 180 - a: 1 - # 页边距 - margin: - top: 100 - left: 60 - # 特殊公式处理服务URL mathToImg: url: http://127.0.0.1:9998/mathToImg diff --git a/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-prod.yml b/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-prod.yml index 039bc39..afc74db 100644 --- a/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-prod.yml +++ b/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-prod.yml @@ -432,26 +432,6 @@ download: # 办公域 scope_work: 52 -# 水印配置项 -watermark: - font-size: 13.0 - # 每页几行 - lineNumPerPage: 8 - # 每页几列 - columnNumPerPage: 2 - # 倾斜角度 - degree: 30 - # 颜色 - color: - r: 180 - g: 180 - b: 180 - a: 1 - # 页边距 - margin: - top: 100 - left: 60 - # 特殊公式处理服务URL mathToImg: url: http://127.0.0.1:9998/mathToImg diff --git a/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-test.yml b/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-test.yml index a60506e..3f8c029 100644 --- a/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-test.yml +++ b/byd-structuredplugins-serve/laws-single-startup/src/main/resources/application-test.yml @@ -432,26 +432,6 @@ download: # 办公域 scope_work: 52 -# 水印配置项 -watermark: - font-size: 13.0 - # 每页几行 - lineNumPerPage: 8 - # 每页几列 - columnNumPerPage: 3 - # 倾斜角度 - degree: 30 - # 颜色 - color: - r: 180 - g: 180 - b: 180 - a: 1 - # 页边距 - margin: - top: 100 - left: 60 - # 特殊公式处理服务URL mathToImg: url: http://127.0.0.1:9998/mathToImg