检查文档密码是否受保护

时间:2015-01-20 11:15:16

标签: java detection password-protection apache-tika

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

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

1 个答案:

答案 0 :(得分:1)

不,没有办法提前检查。这是因为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会很早被抛出,因此开销不会太高