我正在使用 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/