设置DocMDP值为2后Adobe Reader签名按钮禁用问题咨询
认证签名后Adobe Reader禁用数字签名按钮问题
我们尝试添加认证签名,防止文档首次签名后被进一步修改,但每当将DocMDP transform设置为值2(理论上应允许新增签名)时,Adobe Reader会禁用数字签名选项——尽管安全属性中明确显示签名是被允许的。想确认这是Adobe Reader的bug,还是我们的代码存在问题?
PDFBox版本代码
try (PDDocument document = PDDocument.load(conteudoStream, MemoryUsageSetting.setupTempFileOnly())) { PDSignature signature = new PDSignature(); signature.setFilter(PDSignature.FILTER_ADOBE_PPKLITE); signature.setSubFilter(PDSignature.SUBFILTER_ADBE_PKCS7_DETACHED); signature.setName("My System"); signature.setLocation(SOURCE_LOCATION); signature.setReason("Assinatura Digital de documento."); boolean isFirst = document.getSignatureDictionaries().isEmpty(); document.addSignature(signature); if (isFirst) { SigUtils.setMDPPermission(document, signature, 3); } ExternalSigningSupport externalSign = PdfBoxHelper.saveIncrementalForExternalSigning(document, output); externalSign.setSignature(signature); }
iText版本代码
Rectangle rect = new Rectangle(36, 748, 144, 780); PdfSigner signer = new PdfSigner(new PdfReader(inputPath), new FileOutputStream(outputPath), false); signer.setFieldName("signature"); signer.setCertificationLevel(PdfSigner.CERTIFIED_FORM_FILLING); System.out.println("provider: "+Util.getProvedor().getName()); signer.signDetached(new BouncyCastleDigest(), new PrivateKeySignature(key), DigestAlgorithms.SHA512, "SunMSCAPI"), chain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
相关截图
- 安全属性截图:

- 签名按钮禁用截图:

预期与实际情况
我们预期文档修改会被禁止,但允许新增签名——因为DocMDP的描述应为“表单填写和数字签名”,且Adobe Reader的安全属性也列出签名是允许的,但实际数字签名选项被置灰无法使用。
补充说明
- 已附上已认证的PDF样本,使用的Adobe Reader版本为2023.001.20143,文档以DocMDP transform P=2认证,Adobe Reader显示签名允许但数字签名按钮禁用。
- 同时提供了iText生成的样本文件。
- 网上搜索各类已认证PDF样本后,发现所有样本在Adobe Reader中数字签名按钮均未启用,因此怀疑是Adobe Reader的bug。现求问是否存在Adobe Reader允许新增签名的已认证PDF,用于对比PDF结构差异。
内容的提问来源于stack exchange,提问作者Tiago Schumann
相关产品推荐
相关产品推荐

