Encrypt and Decrypt PDF using PyPDF2
Last Updated :
01 Oct, 2020
PDF (Portable Document Format) is one of the most used file formats for storing and sending documents. They are commonly used for many purposes such as eBooks, Resumes, Scanned documents, etc. But as we share pdf to many people, there is a possibility of its data getting leaked or stolen. So, it’s necessary to password protect our PDF files so that only authorized persons can have access to it.
In this article, we are going to see how can we set a password to protect a PDF file. We’ll be using the PyPDF2 module to encrypt and decrypt our PDF files. PyPDF2 is a Python library built as a PDF toolkit. It is capable of:
- Extracting document information (title, author, …)
- Splitting and Merging documents
- Cropping pages
- Encrypting and decrypting PDF files
Installation
PyPDF2 is not an inbuilt library, so we have to install it.
pip3 install PyPDF2
Now, we are ready to write our script to encrypt PDF files.
Encrypting the PDF File
First, We will open our PDF file with the reader object. Then, we will create a copy of the original file so that if something goes wrong, it doesn’t affect our original file. To create a copy, we have to iterate through every page of the file and add it to our new PDF file. Then, we can simply encrypt our new PDF file.
PDF File used:
Python3
from PyPDF2 import PdfFileWriter, PdfFileReader
out = PdfFileWriter()
file = PdfFileReader( "myfile.pdf" )
num = file .numPages
for idx in range (num):
page = file .getPage(idx)
out.addPage(page)
password = "pass"
out.encrypt(password)
with open ( "myfile_encrypted.pdf" , "wb" ) as f:
out.write(f)
|
Output:
This will create a copy of the original file and encrypt it with the entered password. Once the PDF is encrypted, it can not be opened without entering the correct password.
Decrypting The PDF File
But what if we want to decrypt the encrypted PDF file? We can do this too with this library. The process is almost the same. We will open the encrypted file with the correct password and create a copy of it by iterating through every page of it and adding it to our new PDF file.
Here’s the code:
Python3
from PyPDF2 import PdfFileWriter, PdfFileReader
out = PdfFileWriter()
file = PdfFileReader( "myfile_encrypted.pdf" )
password = "pass"
if file .isEncrypted:
file .decrypt(password)
for idx in range ( file .numPages):
page = file .getPage(idx)
out.addPage(page)
with open ( "myfile_decrypted.pdf" , "wb" ) as f:
out.write(f)
print ( "File decrypted Successfully." )
else :
print ( "File already decrypted." )
|
This will create a copy of the encrypted file that doesn’t require a password to be opened.
So, this was a basic script to encrypt and decrypt PDF files. But there are a plethora of ideas to extend this. You can create a GUI tool to do it or Develop a Web application that encrypts PDF files. You can also create a whole PDF Manager using the PyPDF2 library.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...