我有两个安全的pdf文件。一个有密码,另一个是安全的,但没有密码。我正在使用PDF Box。 如何识别哪个文件有密码,哪个文件有安全但没有密码?
答案 0 :(得分:1)
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
}
}
编辑感谢Tilman指出最新代码和替代方法来确定/区分两种加密方式。更新了代码段并相应发布。