如果知道密码已知,如何在Java中打开受密码保护的Microsoft字(.doc,.docx)文件?
答案 0 :(得分:1)
您可以尝试使用com4j。
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.documents.open2000.aspx
由于“open”方法中有一个名为“PasswordDocument”的参数,我认为可以打开受密码保护的文件。
希望这是你要搜索的内容;)
编辑:我在Word中录制了这个宏。
Documents.Open FileName:="test.doc", ConfirmConversions:= _
False, ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:= _
"hallo", PasswordTemplate:="", Revert:=False, WritePasswordDocument:= _
"hallo", WritePasswordTemplate:="", Format:=wdOpenFormatAuto
所以com4j中的open方法应该看起来像这样(密码是“Hallo”):
_Document document = app.documents().open2000(doc, false, false, false, "hallo", "", false, "hallo", "", WdOpenFormat.wdOpenFormatAuto, false, true);
答案 1 :(得分:0)
一个很好的起点是支持Office 97-2003和OOXML(2007-2010)格式的Apache POI项目。如果您主要想从这些文件中提取文本,那么您还应该查看具有一些优秀代码的Tika项目,例如OfficeParser.java
您需要在parse()方法中用第220行的已知密码替换:
if (!d.verifyPassword(Decryptor.DEFAULT_PASSWORD)) {
throw new TikaException("Unable to process: document is encrypted");
}
- 默认密码设置为无用的密码“VelvetSweatshop”(!)
答案 2 :(得分:-1)
在我们的项目中,我们使用Aspose来管理Office文档,但我们不处理受密码保护的文档,但我想这个库处理这种情况......