检查文档密码是否受保护

Check the document password protected or not

我正在使用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 class,它将获取元数据对象并基于该对象进行提示/查找.

另一种选择是尝试解析、捕获 EncryptedDocumentException,然后使用 PasswordProvider(如果可用)重新解析。通常 EncryptedDocumentException 会很早就抛出,因此开销不会太高