fix: PDF水印文字

This commit is contained in:
2024-01-02 09:39:59 +08:00
parent 20075cb3a8
commit b77af10c65
@@ -1,5 +1,6 @@
package com.jero.modules.system.util; package com.jero.modules.system.util;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.ISysUserService;
import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocument;
@@ -24,23 +25,18 @@ import java.time.format.DateTimeFormatter;
/** /**
* 水印工具类 * 水印工具类
*
* @author CaiHaohan * @author CaiHaohan
*/ */
@Component @Component
public class SysWaterMarkUtil { public class SysWaterMarkUtil {
@Resource
private ISysUserService userEoService;
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 {
@@ -51,7 +47,7 @@ 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 = 13.0f;
Color color = new Color(100, 100, 100, 0); Color color = new Color(180, 180, 180, 1);
PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState(); PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
graphicsState.setNonStrokingAlphaConstant(0.4f); graphicsState.setNonStrokingAlphaConstant(0.4f);
graphicsState.setStrokingAlphaConstant(0.4f); graphicsState.setStrokingAlphaConstant(0.4f);