Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

checking if pdf is password protected using itextsharp

I want to check if a pdf file is password protected or not to view. That is i want to know if the pdf file has user password or not.

I found some help in some forum about it to use isencrypted function but it does not give correct answer.

Is it possible to check if a pdf is password protected?

like image 613
Md Kamruzzaman Sarker Avatar asked Jul 02 '12 17:07

Md Kamruzzaman Sarker


People also ask

How do I password protect a PDF in C#?

Add Password to PDF in C# - Lock PDFDefine the password using the AddPasswordOptions class. Load the PDF file using Merger class. Lock the file by adding password using AddPassword method. Save the protected file using the Save method.


1 Answers

The problem with using the PdfReader.IsEncrypted method is that if you attempt to instantiate a PdfReader on a PDF that requires a password - and you don't supply that password - you'll get a BadPasswordException.

Keeping this in mind you can write a method like this:

public static bool IsPasswordProtected(string pdfFullname) {
    try {
        PdfReader pdfReader = new PdfReader(pdfFullname);
        return false;
    } catch (BadPasswordException) {
        return true;
    }
}

Note that if you supply an invalid password you'll get the same BadPasswordException when attempting to construct a PdfReader object. You can use this to create a method that validates a PDF's password:

public static bool IsPasswordValid(string pdfFullname, byte[] password) {
    try {
        PdfReader pdfReader = new PdfReader(pdfFullname, password);
        return false;
    } catch (BadPasswordException) {
        return true;
    }
}

Sure it's ugly but as far as I know this is the only way to check if a PDF is password protected. Hopefully someone will suggest a better solution.

like image 187
Jay Riggs Avatar answered Sep 25 '22 10:09

Jay Riggs