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

PDFBox对已签名PDF追加签名触发DocMDP报错如何解决

PDFBox追加签名DocMDP报错解决方案

错误根因

该报错是PDF规范的强制限制:DocMDP 是PDF的文档修改保护权限,仅能绑定到文档的第一个签名(即认证签名),只要PDF已经存在任意已生效的审批签名,就无法再添加DocMDP权限配置。

解决步骤

  • 跳过MDP权限设置逻辑:你当前代码中存在if (doc.getVersion() >= 1.5f && accessPermissions == 0)的判断分支,满足条件时会自动调用SigUtils.setMDPPermission方法触发报错。你可以将accessPermissions参数赋值为非0值跳过该分支,或者直接注释调用setMDPPermission的代码行即可,多签场景下后续追加的签名不需要配置MDP权限。
  • 确认签名类型为普通审批签名:PDF多签场景中除第一个签名外,后续所有签名均使用普通审批签名类型即可,无需使用认证签名类型,PDFBox默认追加签名就是审批类型,只要不主动调用MDP相关配置方法就不会触发报错。
  • 确认使用增量更新模式加签:追加签名时必须使用PDF的增量更新模式,不能直接修改原PDF的原始内容,否则会导致之前已存在的签名失效。你使用的CreateVisibleSignature2工具类默认支持增量更新,只要未修改相关更新模式配置即可正常使用。

效果校验

修改代码后重新执行签名流程,签名完成后可以调用SignatureUtil类的校验方法验证所有签名的有效性,确认加签后原有签名和新添加的签名均有效即可。

原始报错信息:
java.io.IOException: DocMDP transform method not allowed if an approval signature exists

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:48:00