Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PyPDF 2 Decrypt Not Working

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).

like image 966
Jin Lee Avatar asked Oct 07 '14 18:10

Jin Lee


1 Answers

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.

like image 74
Luke Rehmann Avatar answered Sep 17 '22 18:09

Luke Rehmann