用Java打开受密码保护的Word文件?

时间:2010-09-09 10:37:54

标签: java ms-office password-protection

如果知道密码已知,如何在Java中打开受密码保护的Microsoft字(.doc,.docx)文件?

3 个答案:

答案 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文档,但我们不处理受密码保护的文档,但我想这个库处理这种情况......