检查文档密码是否受保护
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
会很早就抛出,因此开销不会太高
我正在使用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
会很早就抛出,因此开销不会太高