如何区分两个加密/安全的PDF文件

时间:2015-06-24 07:09:29

标签: java pdf pdfbox

我有两个安全的pdf文件。一个有密码,另一个是安全的,但没有密码。我正在使用PDF Box。 如何识别哪个文件有密码,哪个文件有安全但没有密码?

1 个答案:

答案 0 :(得分:1)

PDF有两种加密方式 -

  • 所有者密码 - 由PDF所有者/创作者设置的密码以限制其使用(例如编辑,打印,复制等
  • 用户密码 - 设置密码以打开/查看PDF

PDF只能拥有所有者密码或两者兼有;但不仅仅是用户密码。在任何一种情况下,PDF都被称为加密,并且没有直接API来区分两种加密。

如果是PDFBox,您可以使用下面的代码段来确定它是否已加密;并区分它是否只拥有所有者密码。

PDDocument pdfDoc = PDDocument.load(new File("path/to/pdf"));
boolean hasOwnerPwd = false;
boolean hasUserPwd = false;
if(pdfDoc.isEncrypted()){
    hasOwnerPwd = true;
    try{
        StandardDecryptionMaterial sdm = new StandardDecryptionMaterial(null);
        pdfDoc.openProtection(sdm);
        hasUserPwd = true;
    } catch(Exception e){
        // handle exception
    }
}

请参阅PDFBox API文档herehere

编辑感谢Tilman指出最新代码和替代方法来确定/区分两种加密方式。更新了代码段并相应发布。