是否有可以检查PDF和Office文件格式的Java API - 返回受密码保护/加密的文件列表?
答案 0 :(得分:2)
您可以使用POI进行办公文档加密。
以下基于Office XML格式的示例(.xlsx,.pptx,.docx,...)。
基于XML的格式存储在OLE-package流" EncryptedPackage"中。使用org.apache.poi.poifs.crypt.Decryptor解码文件:
EncryptionInfo info = new EncryptionInfo(filesystem);
Decryptor d = Decryptor.getInstance(info);
try {
if (!d.verifyPassword(password)) {
throw new RuntimeException("Unable to process: document is encrypted");
}
InputStream dataStream = d.getDataStream(filesystem);
// parse dataStream
} catch (GeneralSecurityException ex) {
throw new RuntimeException("Unable to process encrypted document", ex);
}
如果您想阅读使用内置密码加密的文件,请使用Decryptor.DEFAULT_PASSWORD。
您可以使用iText pdf API来识别受密码保护的PDF。
示例:
try {
new PdfReader("C:\\Password_protected.pdf");
} catch (BadPasswordException e) {
System.out.println("PDF is password protected..");
} catch (Exception e) {
e.printStackTrace();
}