Cifrar y descifrar PDF usando PyPDF2

PDF ( Portable Document Format ) es uno de los formatos de archivo más utilizados para almacenar y enviar documentos. Se usan comúnmente para muchos propósitos, como libros electrónicos, currículums, documentos escaneados, etc. Pero como compartimos pdf con muchas personas, existe la posibilidad de que sus datos se filtren o sean robados. Por lo tanto, es necesario proteger con contraseña nuestros archivos PDF para que solo las personas autorizadas puedan tener acceso a ellos.

En este artículo, vamos a ver cómo podemos establecer una contraseña para proteger un archivo PDF. Usaremos el módulo PyPDF2 para cifrar y descifrar nuestros archivos PDF. PyPDF2 es una biblioteca de Python creada como un conjunto de herramientas de PDF. Es capaz de:

  • Extraer información del documento (título, autor,…)
  • Dividir y fusionar documentos
  • Recortar páginas
  • Cifrado y descifrado de archivos PDF

Instalación

PyPDF2 no es una biblioteca incorporada, por lo que debemos instalarla.

pip3 install PyPDF2

Ahora, estamos listos para escribir nuestro script para cifrar archivos PDF.

Cifrar el archivo PDF

Primero, abriremos nuestro archivo PDF con el objeto del lector. Luego, crearemos una copia del archivo original para que, si algo sale mal, no afecte nuestro archivo original. Para crear una copia, tenemos que recorrer cada página del archivo y agregarlo a nuestro nuevo archivo PDF. Luego, simplemente podemos cifrar nuestro nuevo archivo PDF.

Archivo PDF utilizado:

Python3

# import PdfFileWriter and PdfFileReader 
# class from PyPDF2 library
from PyPDF2 import PdfFileWriter, PdfFileReader
  
# create a PdfFileWriter object
out = PdfFileWriter()
  
# Open our PDF file with the PdfFileReader
file = PdfFileReader("myfile.pdf")
  
# Get number of pages in original file
num = file.numPages
  
# Iterate through every page of the original 
# file and add it to our new file.
for idx in range(num):
    
    # Get the page at index idx
    page = file.getPage(idx)
      
    # Add it to the output file
    out.addPage(page)
  
  
# Create a variable password and store 
# our password in it.
password = "pass"
  
# Encrypt the new file with the entered password
out.encrypt(password)
  
# Open a new file "myfile_encrypted.pdf"
with open("myfile_encrypted.pdf", "wb") as f:
    
    # Write our encrypted PDF to this file
    out.write(f)

Producción:

Esto creará una copia del archivo original y la cifrará con la contraseña ingresada. Una vez que el PDF está encriptado, no se puede abrir sin ingresar la contraseña correcta.

Descifrar el archivo PDF

Pero, ¿y si queremos descifrar el archivo PDF encriptado? También podemos hacer esto con esta biblioteca. El proceso es casi el mismo. Abriremos el archivo encriptado con la contraseña correcta y crearemos una copia iterando a través de cada página y agregándolo a nuestro nuevo archivo PDF.

Aquí está el código:

Python3

# import PdfFileWriter and PdfFileReader 
# class from PyPDF2 library
from PyPDF2 import PdfFileWriter, PdfFileReader
  
# Create a PdfFileWriter object
out = PdfFileWriter()
  
# Open encrypted PDF file with the PdfFileReader
file = PdfFileReader("myfile_encrypted.pdf")
  
# Store correct password in a variable password.
password = "pass"
  
# Check if the opened file is actually Encrypted
if file.isEncrypted:
  
    # If encrypted, decrypt it with the password
    file.decrypt(password)
  
    # Now, the file has been unlocked.
    # Iterate through every page of the file
    # and add it to our new file.
    for idx in range(file.numPages):
        
        # Get the page at index idx
        page = file.getPage(idx)
          
        # Add it to the output file
        out.addPage(page)
      
    # Open a new file "myfile_decrypted.pdf"
    with open("myfile_decrypted.pdf", "wb") as f:
        
        # Write our decrypted PDF to this file
        out.write(f)
  
    # Print success message when Done
    print("File decrypted Successfully.")
else:
    
    # If file is not encrypted, print the 
    # message
    print("File already decrypted.")

Esto creará una copia del archivo encriptado que no requiere una contraseña para abrirse.

Entonces, este era un script básico para cifrar y descifrar archivos PDF. Pero hay una plétora de ideas para extender esto. Puede crear una herramienta GUI para hacerlo o desarrollar una aplicación web que cifre archivos PDF. También puede crear un administrador de PDF completo utilizando la biblioteca PyPDF2 .

Publicación traducida automáticamente

Artículo escrito por devansh07 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *