PyPDF 2 Decrypt Not Working

Jin Lee picture Jin Lee · Oct 7, 2014 · Viewed 21.9k times · Source

Currently I am using the PyPDF 2 as a dependency.

I have encountered some encrypted files and handled them as you normally would (in the following code):

    PDF = PdfFileReader(file(pdf_filepath, 'rb'))
    if PDF.isEncrypted:
        PDF.decrypt("")
        print PDF.getNumPages()

My filepath looks something like "~/blah/FDJKL492019 21490 ,LFS.pdf" PDF.decrypt("") returns 1, which means it was successful. But when it hits print PDF.getNumPages(), it still raises the error, "PyPDF2.utils.PdfReadError: File has not been decrypted".

How do I get rid of this error? I can open the PDF file just fine by double click (which default-opens with Adobe Reader).

Answer

Luke Rehmann picture Luke Rehmann · Aug 24, 2015

This error may come about due to 128-bit AES encryption on the pdf, see Query - is there a way to bypass security restrictions on a pdf?

One workaround is to decrypt all isEncrypted pdfs with "qpdf"

qpdf --password='' --decrypt input.pdf output.pdf

Even if your PDF does not appear password protected, it may still be encrypted with no password. The above snippet assumes this is the case.