Открыть защищенный паролем файл Word на Java?

Как открыть защищенное паролем Microsoft word (.доктор. ,docx) файл на Java, предполагая, что пароль известен?

3 ответов


Вы можете попробовать его с com4j.

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.documents.open2000.aspx

поскольку в методе "open" есть параметр "PasswordDocument", я думаю, что можно открыть файл, защищенный паролем.

надеюсь, это то, что вы искали ;)

Edit: я записал этот макрос в Word.

Documents.Open FileName:="test.doc", ConfirmConversions:= _
    False, ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:= _
    "hallo", PasswordTemplate:="", Revert:=False, WritePasswordDocument:= _
    "hallo", WritePasswordTemplate:="", Format:=wdOpenFormatAuto

таким образом, метод open в com4j должен выглядеть что-то вроде этого (пароль "Алло"):

     _Document document = app.documents().open2000(doc, false, false, false, "hallo", "", false, "hallo", "", WdOpenFormat.wdOpenFormatAuto, false, true);

хорошей отправной точкой будет проект Apache POI, который поддерживает форматы Office 97-2003 и OOXML (2007-2010). Если вы в основном заинтересованы в извлечении текста из этих файлов, вы также должны посмотреть на проект Tika, который имеет хороший код, например OfficeParser.java

вы захотите заменить известный пароль(ы) вокруг строки 220 в методе parse ():

if (!d.verifyPassword(Decryptor.DEFAULT_PASSWORD)) {
throw new TikaException("Unable to process: document is encrypted");
}

-- пароль по умолчанию установлен в основном бесполезный пароль "VelvetSweatshop" (!)


в наших проектах мы используем Aspose для управления документами Office, но мы не имеем дело с защищенными паролем документами, но я полагаю, что эта библиотека обрабатывает такие случаи...