You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用iText签名PDF后如何锁定文档禁改及禁止新增签名

问题原因

你当前使用的setCertificationLevel(PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED)是文档认证签名的配置,这类签名属于文档作者初始认证标记,阅读器对应的提示就是“no changes allowed(不允许更改)”,和你期望的“locked by signature(已通过签名锁定)”是两套完全独立的PDF签名机制:

  • 认证签名:一个PDF仅能存在一个,用于标记文档发布者身份,权限控制是文档级配置
  • 签名锁定:属于普通批准签名的扩展规则,签名生效后通过签名携带的锁字典限制文档操作,阅读器识别到该配置时就会提示“已通过签名锁定”
实现方案

去掉原有设置认证级别的代码,改为给签名添加全文档范围的签名锁配置,参考代码如下:

PdfSignatureAppearance pdfAppearance = stamper.getSignatureAppearance();
// 初始化签名锁对象
PdfSignatureLock signatureLock = new PdfSignatureLock();
// 配置锁定范围:全文档锁定,禁止内容修改、禁止新增任何签名/表单字段
signatureLock.lockAll();
// 将锁配置绑定到当前签名
pdfAppearance.setSignatureLock(signatureLock);

// 后续按原有签名流程执行签名、关闭stamper即可
注意事项
  • 不要同时配置认证级别和签名锁,两者逻辑互斥,同时配置时会优先走认证签名逻辑,无法触发“已通过签名锁定”的提示
  • 该配置要求iText版本为5.5.0及以上、iText 7全版本支持,低版本无PdfSignatureLock类无法实现该效果
  • 配置完成后生成的签名文档,会同时禁止内容修改、禁止追加新签名,和期望效果完全一致

内容的提问来源于stack exchange,提问作者Alfredo Morales

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 00:51:27