PDF水印添加:kkFileView支持文字与图片水印功能
在日常办公中,PDF文件的安全保护至关重要,而水印功能是防止文件盗用和扩散的有效手段。kkFileView作为一款基于Spring-Boot的通用文件在线预览项目,提供了强大的PDF水印添加功能,支持文字和图片水印,满足不同场景下的安全需求。
水印功能配置文件
水印功能的相关配置主要集中在server/src/main/config/application.properties文件中。通过修改该文件中的参数,可以灵活定制水印的各项属性。
默认情况下,水印功能是禁用的,需要手动开启。配置文件中与水印相关的参数如下:
#生成水印 默认不启用 使用方法 (kkFileView)
office.watermark = ${KK_OFFICE_WATERMARK:false}
#水印内容
#例:watermark.txt = ${WATERMARK_TXT:凯京科技内部文件,严禁外泄}
#如需取消水印,内容设置为空即可,例:watermark.txt = ${WATERMARK_TXT:}
watermark.txt = ${WATERMARK_TXT:}
#水印x轴间隔
watermark.x.space = ${WATERMARK_X_SPACE:10}
#水印y轴间隔
watermark.y.space = ${WATERMARK_Y_SPACE:10}
#水印字体
watermark.font = ${WATERMARK_FONT:微软雅黑}
#水印字体大小
watermark.fontsize = ${WATERMARK_FONTSIZE:18px}
#水印字体颜色
watermark.color = ${WATERMARK_COLOR:black}
#水印透明度,要求设置在大于等于0.005,小于1
watermark.alpha = ${WATERMARK_ALPHA:0.2}
#水印宽度
watermark.width = ${WATERMARK_WIDTH:180}
#水印高度
watermark.height = ${WATERMARK_HEIGHT:80}
#水印倾斜度数,要求设置在大于等于0,小于90
watermark.angle = ${WATERMARK_ANGLE:10}
文字水印配置
文字水印是最常用的水印类型,通过设置watermark.txt参数可以指定水印的文本内容。例如,要添加"内部文件,严禁外泄"的文字水印,可以将该参数设置为:
watermark.txt = ${WATERMARK_TXT:内部文件,严禁外泄}
同时,还可以调整水印的字体、大小、颜色、透明度等属性。例如,将字体设置为"宋体",大小设置为"24px",颜色设置为"red",透明度设置为"0.3":
watermark.font = ${WATERMARK_FONT:宋体}
watermark.fontsize = ${WATERMARK_FONTSIZE:24px}
watermark.color = ${WATERMARK_COLOR:red}
watermark.alpha = ${WATERMARK_ALPHA:0.3}
水印参数配置类
水印参数的读取和设置由server/src/main/java/cn/keking/config/WatermarkConfigConstants.java类负责。该类通过@Value注解从配置文件中获取水印相关的参数,并提供了静态方法用于设置和获取这些参数。
例如,获取水印内容的方法:
@Value("${watermark.txt:}")
public void setWatermarkTxt(String watermarkTxt) {
setWatermarkTxtValue(watermarkTxt);
}
同时,在server/src/main/java/cn/keking/service/OfficeToPdfService.java中,水印参数被传递给PDF生成过滤器:
filterData.put("Watermark", ConfigConstants.getOfficeWatermark()); //水印
水印效果预览
配置完成后,通过kkFileView预览PDF文件时,水印效果将实时显示。以下是一些不同类型文件预览时的水印效果示例:
PDF文件预览
Word文档转换PDF预览
Excel表格转换PDF预览
水印功能实现原理
水印功能的实现主要涉及到配置参数的读取和应用。在项目启动时,server/src/main/java/cn/keking/config/ConfigRefreshComponent.java类会加载配置文件中的水印参数,并将其设置到WatermarkConfigConstants类中:
String watermarkTxt = properties.getProperty("watermark.txt", WatermarkConfigConstants.DEFAULT_WATERMARK_TXT);
String watermarkXSpace = properties.getProperty("watermark.x.space", WatermarkConfigConstants.DEFAULT_WATERMARK_X_SPACE);
// ... 其他参数的获取
WatermarkConfigConstants.setWatermarkTxtValue(watermarkTxt);
WatermarkConfigConstants.setWatermarkXSpaceValue(watermarkXSpace);
// ... 其他参数的设置
当需要生成PDF文件时,OfficeToPdfService类会将水印参数传递给相应的过滤器,从而在PDF文件中添加水印。
总结
kkFileView提供的PDF水印添加功能,通过简单的配置即可实现文字水印的添加,满足了文件安全保护的需求。通过调整配置文件中的参数,可以灵活定制水印的内容、样式和布局,适应不同场景的需求。
官方文档中还提供了更多关于项目部署和使用的详细信息,可以参考README.md和README.cn.md文件。如果需要查看水印功能的具体实现代码,可以参考server/src/main/java/cn/keking/config/WatermarkConfigConstants.java和server/src/main/java/cn/keking/service/OfficeToPdfService.java等相关文件。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0148- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111


