Qt PDF阅读器-水印功能

1. 功能简介

水印功能用于在阅读器中为文档页面叠加文字水印。用户可以在阅读文档时开启水印预览,调整水印文字、字号、透明度、间距和角度;对于普通 PDF 文档,可以将当前水印写回到 PDF 文件中。

该功能同时承担加密文档访问标识能力。加密文档打开后会强制显示访问水印,水印内容默认包含当前用户和时间,用于提示文档访问来源。

2. 适用场景

  • 为普通 PDF 添加"内部资料""机密"等标识。
  • 在文档预览阶段临时叠加自定义水印。
  • 将普通 PDF 的水印效果固化写入文件。
  • 对加密文档展示带用户信息的访问水印。
  • 在共享或演示文档时增强来源提示和敏感信息提示。

3. 支持范围

当前版本支持:

  • 普通 PDF 水印预览。
  • 普通 PDF 水印写回源文件。
  • OFD 等其他格式的水印预览。

4. 使用流程

  1. 打开文档。
  2. 点击工具栏中的"水印"按钮。
  3. 在右侧水印面板中勾选"启用水印"。
  4. 输入水印文字,或点击快速预设。
  5. 调整字号、透明度、间距和角度。
  6. 阅读区实时刷新并展示水印效果。
  7. 如果当前文档是普通 PDF,点击"写入 PDF"将水印保存到文件。
  8. 如果只是预览,可关闭水印面板或取消启用水印。

5. 面板功能

5.1 启用水印

"启用水印"用于控制普通文档的自定义水印预览。未勾选时,普通文档不显示自定义水印。

加密文档会强制启用访问水印,此时启用开关不可操作,并提示"加密文档会强制显示访问水印"。

5.2 快速预设

面板提供三个快捷水印:

  • 内部资料。
  • 机密。
  • 用户名+时间。

点击预设后会自动勾选"启用水印",并将预设内容填入水印文字输入框。

5.3 水印文字

用户可以输入自定义水印文字。启用水印但文字为空时,系统提示"请输入水印文字",并不会生成有效自定义水印。

加密文档未使用自定义水印时,默认水印内容为"当前用户或登录用户名 + 当前时间"。

5.4 样式参数

水印样式支持以下参数:

  • 字号:范围 8 到 96,默认 20。
  • 透明度:范围 10% 到 100%,默认使用灰色半透明效果。
  • 间距:范围 20 到 400,默认 100。
  • 角度:范围 -90 度到 90 度,默认 -45 度。

参数调整后会延迟约 240 毫秒刷新预览,避免拖动滑块时频繁重绘。

6. 预览规则

水印预览通过页面渲染后的图片进行叠加,不直接修改正在阅读的源文件。

系统会在以下场景刷新预览:

  • 开启或关闭水印。
  • 修改水印文字。
  • 调整字号、透明度、间距或角度。
  • 打开水印面板并同步当前状态。
  • 加密文档启用访问水印。

水印绘制方式为:

  • 使用灰色文字。
  • 按配置透明度设置 alpha。
  • 将画布平移到页面中心并按配置角度旋转。
  • 按水印文字宽度、高度和间距平铺绘制整页。

7. 保存和写回规则

普通 PDF 且已启用有效自定义水印时,可以点击"写入 PDF"保存。

写入流程如下:

  1. 停止未完成的预览定时器,并应用当前面板配置。
  2. 校验当前文档是否为普通 PDF。
  3. 创建临时 PDF 输出文件。
  4. 后台逐页渲染源 PDF 页面。
  5. 将水印绘制到每页图片上。
  6. 生成带水印的新 PDF。
  7. 用生成文件替换当前 PDF。
  8. 重新打开保存后的 PDF。
  9. 清理当前文件的临时水印配置。

写入过程中会显示进度对话框,用户可以取消。取消后会删除临时文件,并提示"已取消保存水印"。

8. 状态提示

水印面板会根据当前状态展示提示:

  • 未打开文档:请先打开文档。
  • 加密文档:加密文档访问水印已启用,不会写回源文件。
  • 普通 PDF 已启用水印:正在预览,尚未写入文件。
  • 非 PDF 已启用水印:当前格式可预览,暂不支持写回。
  • 未启用水印:水印已关闭。
  • 启用但文字为空:请输入水印文字。

"写入 PDF"按钮只在普通 PDF 且存在有效水印时可用。