java - 检查文档是否受密码保护

标签 java detection password-protection apache-tika

我正在使用 Apache-Tika 来读取和写入文档。这样我就可以享受阅读 PDF 和 Microsoft 文档的优势。

我想在继续之前检查文档是否受密码保护。有没有明确的方法可以做到这一点?

最佳答案

不,没有办法提前检查。这是因为 Tika 在以公平的方式处理该文件之前不会知道该文件受到密码保护

如果您知道文件的密码,您应该使用如下逻辑:

ParseContext context = new ParseContext();
context.set(PasswordProvider.class, new PasswordProvider() {
     public String getPassword(Metadata metadata) {
        return "password";
    }
});
parser.parse(stream, handler, metadata, context);

否则,如果您不知道密码并且系统会提示您输入密码,请提供PasswordProvider类将获取元数据对象并基于该对象进行提示/查找。

另一个选择是尝试解析、捕获 EncryptedDocumentException然后使用 PasswordProvider 重新解析(如果可用)。一般是EncryptedDocumentException很早就被抛出,所以开销并不太高

关于java - 检查文档是否受密码保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28043969/

相关文章:

java - 错误 : Failed to parse a schema by xjc in case of xs:choice

java - 当我创建 Spring Boot 项目 pom.xml 时,我首先遇到错误

android - Delphi Android密码保护一个文件

node.js - 从nodejs读取受密码保护的excel文件

java - taskdef 类 org.apache.catalina.ant.InstallTask​​ 找不到

java - Android Studio 启动失败,因为我找不到

ios - 检测核心图上的触摸的方法

java - 如何将 Handler 与 CaptureSession.stopReapeating() 一起使用?

安卓应用程序。如何在代码中检测应用程序是新安装还是更新?

installation - wix - 保存登录名\密码以连接到 MSSQL Server