我在Qudo Tool PDF里面把 PDF 水印做成了一个正经功能
介绍 Qudo Tool PDF 水印功能的设计与优化:支持文字和图片水印、九宫格定位、旋转与透明度调节,并通过按水印尺寸计算平铺间距、允许边缘自然裁切,解决水印重叠和边缘堆积问题。
PDF 水印看起来只是“在页面上加几个字”,真做起来才发现,难点不是把文字画上去,而是让它在各种页面尺寸、旋转角度和水印内容下都摆得自然。
我在 QudoPDF 里做水印功能时,先把需求拆成两类:单个水印和平铺水印。
单个水印可以放在九宫格位置,调整边距、偏移、旋转角度和透明度。文字和图片都支持。图片水印保留原图比例,并可设置相对页面宽度;文字水印则要考虑字体、字号、粗体和中英文字符。


页面本身如果带旋转,还要换算坐标,避免水印方向跟着页面一起错位。
平铺模式一开始效果并不好。水印之间会互相压住,页面边缘也容易挤成一团。排查后发现,原来的间距只是固定的中心点距离:字号较大、文字较长或旋转角度较大时,水印实际占用的空间会超过这个间距。另一个问题是边缘的水印被强行拉回页面内部,几个不同的锚点因此可能重叠。
修正思路是先估算水印旋转后的包围范围,再根据实际尺寸确定平铺网格的最小间隔。页面边缘处不再把水印拉回页面,而是让它自然裁切。这样既保留了用户设置的间距,也避免大字号或长文字把整页铺乱。
水印还有一个容易忽略的细节:应该加在内容上方,还是压在内容下方?QudoPDF 把这个选择留给用户。对于需要醒目提示的文件,可以放在内容上方;想尽量不干扰阅读,则可以放在内容下方。
做这类功能时,我越来越觉得,界面上的一个滑块并不等于功能完成。真正的工作是把参数变成稳定、可预期的版面结果:页面变宽时布局不能失控,文字变长时间距不能塌,旋转后边缘也不能堆出一团。
这次水印调整解决的是平铺布局的重叠和边缘聚集。下一步还可以继续完善水印预览、按页应用范围,以及不同页面方向混排时的视觉一致性。
链接文字 Qudo Tool PDF