在pdfbox中删除PublicKeyProtectionPolicy

时间:2019-03-05 22:36:45

标签: java security pdf pdfbox

我开发了PDF编码器,该编码器通常会删除密码并启用编辑功能。 但是,现在有一个受证书保护的文件,除类型不安全外,禁止更改任何内容。

我尝试了以下代码:

PDDocument doc = PDDocument.load(input);

AccessPermission perms = new AccessPermission();
perms.setCanAssembleDocument(true);
perms.setCanExtractContent(true);
perms.setCanModify(true);
perms.setCanModifyAnnotations(true);
perms.setCanExtractForAccessibility(true);
perms.setCanFillInForm(true);
perms.setCanPrint(true);
perms.setCanPrintDegraded(true);
perms.setCanExtractForAccessibility(true);

StandardProtectionPolicy policy = new StandardProtectionPolicy("secret", "", perms);
doc.protect(policy);

doc.setAllSecurityToBeRemoved(true);

doc.save(output);

但是它仅适用于受密码保护的文件。

有人知道错误/灵魂吗?

1 个答案:

答案 0 :(得分:0)

我的猜测是该文件使用证书而非标准密码方法加密。在这种情况下,除非您具有相应的解密证书,否则您将无能为力。