This page describes how to perform indexing of password protected documents.
Indexing using the password dictionary
To perform indexing of password protected documents using a password dictionary, you must add passwords for all protected documents to the dictionary before indexing. To add a document password to the dictionary, you must specify the full path to the document as a key and the actual password to the document. For more information about managing the password dictionary see the Document passwords page in the Managing dictionaries section.
The password dictionary is stored on disk in encrypted form. However, very simple encryption is used, so if you want to protect the passwords themselves, it is better to use the PasswordRequired event to set passwords.
The following example demonstrates how to perform indexing of password protected documents using a password dictionary.
StringindexFolder="c:\\MyIndex\\";StringdocumentsFolder="c:\\MyDocuments\\";// Creating an index
Indexindex=newIndex(indexFolder);// Adding document passwords to the dictionary
Stringpath=newFile("C:\\MyDocuments\\ProtectedDocument.pdf").getAbsolutePath();index.getDictionaries().getDocumentPasswords().add(path,"123456");// ...
// Indexing documents from the specified folder
// Passwords will be automatically retrieved from the dictionary when necessary
index.add(documentsFolder);
Indexing using the PasswordRequired event
The password for the protected document can also be provided when the PasswordRequired event occurs. This method is more secure, however, it requires matching the indexed documents and their passwords in the event handler.
Both of the described methods for providing document passwords can be used together. The index first checks for a document password in the password dictionary, and then, if the password is absent, raises the PasswordRequired event. If the password is not provided or an incorrect password is provided, the index will raise the ErrorOccurred event with the corresponding error message and the document will not be indexed. You can learn more about index events on the page Search index events.
The following example shows how to provide password for a document using the PasswordRequired event.
StringindexFolder="c:\\MyIndex\\";StringdocumentsFolder="c:\\MyDocuments\\";// Creating an index
Indexindex=newIndex(indexFolder);// Subscribing to the event
index.getEvents().PasswordRequired.add(newEventHandler<PasswordRequiredEventArgs>(){publicvoidinvoke(Objectsender,PasswordRequiredEventArgsargs){if(args.getDocumentFullPath().endsWith("ProtectedDocument.pdf")){args.setPassword("123456");// Providing password for the file 'ProtectedDocument.pdf'
}}});// Indexing documents from the specified folder
index.add(documentsFolder);
More resources
GitHub examples
You may easily run the code from documentation articles and see the features in action in our GitHub examples: