我正在使用Apache-Tika来读写文档。这样我就可以获得阅读PDF和Microsoft文档的优势。
我想在继续操作之前检查文档密码是否受到保护。有没有明确的方法来做到这一点?
答案 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
会很早被抛出,因此开销不会太高