繁体   English   中英

为什么使用 PDFBOX 受密码保护的 PDF 在 Microsoft Edge 浏览器中无需密码即可打开?

[英]Why password protected PDF using PDFBOX is opening without password in Microsoft Edge browser?

我已经使用 PDFBOX (v 2.0.16) 加密了一个 pdf 文件。 当我尝试使用 adobe acrobat reader 打开这个受密码保护的文件时,它要求输入密码来解锁它,但是当我尝试使用 Microsoft Edge (v 44.18362.449.0) 打开它时,它直接打开它而不要求输入密码。

以下是用于带密码的锁定文件的示例代码 -

private void lockPDFWithPassword(final OutputStream os) throws IOException {
    PDDocument pdDocument = PDDocument.load(((ByteArrayOutputStream) os).toByteArray());
    AccessPermission ap = new AccessPermission();
    StandardProtectionPolicy spp = new StandardProtectionPolicy("sampleOwnerPassword", "sampleUserPassword", ap);
    spp.setEncryptionKeyLength(128);
    spp.setPermissions(ap);
    pdDocument.protect(spp);
    pdDocument.save(os);
    pdDocument.close();
    os.close();
}

以下是受密码保护的文件链接 -

https://drive.google.com/open?id=1ifcfzGSA_Qr37TzmTqU4Qi14OdVVsdJV

这是连接在一起的两个文件。 第一个是未加密的文件,然后是加密的文件。 当将两者分开时,它可以正常工作。

奇怪行为的原因是 PDF 查看器有显示损坏文件的策略。 我猜一个观众使用了第一个,另一个使用了第二个。

修复效果,这样做:

os.reset();

在保存之前,以便它写入ByteArrayOutputStream的开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM