Skip to content

PyPDF2: La Biblioteca Definitiva de Python para Manipular PDF

Updated on

PyPDF2 es una biblioteca poderosa, gratuita y de código abierto diseñada para manipular PDF en Python. Es una herramienta versátil que le permite dividir, fusionar, recortar, transformar, encriptar y desencriptar archivos PDF con facilidad. PyPDF2 admite versiones de PDF del 1.4 al 1.7 y no requiere dependencias externas aparte de la biblioteca estándar de Python, lo que la convierte en una opción accesible y conveniente para los desarrolladores de Python que trabajan con PDF.

Esta biblioteca no solo es robusta sino también segura, ofreciendo una variedad de funciones que aseguran la integridad y confidencialidad de sus archivos PDF. Desde agregar contraseñas a los PDF hasta recuperar texto y metadatos de ellos, PyPDF2 proporciona un conjunto completo de herramientas para la manipulación de PDF. En este artículo, profundizaremos en las capacidades de PyPDF2, brindando explicaciones detalladas, definiciones y ejemplos para ayudarlo a aprovechar al máximo esta biblioteca.

¿Deseas crear rápidamente visualizaciones de datos de un DataFrame de Pandas en Python sin código?

PyGWalker es una biblioteca de Python para el análisis exploratorio de datos con visualización. PyGWalker (opens in a new tab) puede simplificar su flujo de trabajo de análisis y visualización de datos en Jupyter Notebook, convirtiendo su DataFrame de pandas (y DataFrame de polars) en una interfaz de usuario estilo Tableau para exploración visual.

PyGWalker para visualización de datos (opens in a new tab)

¿Qué es PyPDF2?

PyPDF2 es una biblioteca de Python pura que es capaz de dividir, fusionar, recortar y transformar las páginas de archivos PDF. También puede agregar datos personalizados, opciones de visualización y contraseñas a archivos PDF. Además, PyPDF2 puede extraer texto y metadatos de los PDF, lo que la convierte en una herramienta completa para la manipulación de PDF.

La biblioteca es de código abierto, lo que significa que está disponible de forma gratuita para que cualquier persona la use, modifique y distribuya. Esto la convierte en una opción popular entre los desarrolladores que necesitan trabajar con PDF en Python. PyPDF2 también es independiente de la plataforma, por lo que puedes usarlo independientemente de si estás trabajando en una máquina con Windows, Mac o Linux.

Instalación y Uso de PyPDF2

La instalación de PyPDF2 es sencilla y se puede hacer utilizando pip, el instalador de paquetes para Python. PyPDF2 requiere Python 3.6 o superior para funcionar. A continuación, te mostramos cómo puedes instalar PyPDF2 utilizando pip:

pip install PyPDF2

También puedes instalar PyPDF2 utilizando Anaconda, una distribución popular de Python para ciencia de datos y aprendizaje automático. Así es cómo se hace:

pip install git+https://github.com/py-pdf/PyPDF2.git

Una vez instalado, puedes importar la biblioteca PyPDF2 en tu script de Python de la siguiente manera:

import PyPDF2

Para verificar la versión de PyPDF2 que estás utilizando, puedes utilizar el atributo __version__:

PyPDF2.__version__

Trabajando con PDFs con PyPDF2

Una vez que hayas instalado PyPDF2, puedes comenzar a trabajar con PDFs. Veamos algunas operaciones comunes que es posible que necesites realizar.

Leer un PDF

Para leer un PDF, primero debes abrir el archivo en modo de lectura binaria ('rb'), y luego crear un objeto PdfFileReader:

inputFile = "ruta_a_tu_archivo_pdf.pdf"
pdf = open(inputFile, "rb")
pdf_reader = PyPDF2.PdfFileReader(pdf)

Puedes verificar la cantidad de páginas en el PDF utilizando el atributo numPages:

totalPages = pdf_reader.numPages
print(totalPages)

Extraer Texto de un PDF

Para extraer texto de un PDF, puedes usar el método extractText() de la clase PageObject. Primero, debes obtener un PageObject que represente una página específica en el PDF:

page = pdf_reader.getPage(0)  ## Obtener la primera página

Luego, puedes extraer el texto de esta página:

print(page.extractText())

Esto imprimirá el contenido de texto de la primera página del PDF en la consola. Ten en cuenta que extractText() es posible que no siempre funcione perfectamente, dependiendo de la complejidad del PDF y la codificación de su texto.

Dividir Páginas de PDF

Una de las características potentes de PyPDF2 es la capacidad de dividir páginas de PDF. Esto se puede hacer utilizando el método getPage() del objeto PdfFileReader, que recupera una página por su número. Aquí tienes un ejemplo de cómo dividir la primera página de un PDF:

## Abrir el PDF
with open('ruta_a_tu_archivo_pdf.pdf', 'rb') as file:
    reader = PyPDF2.PdfFileReader(file)
    writer = PyPDF2.PdfFileWriter()
 
    ## Obtener la primera página
    first_page = reader.getPage(0)
 
    ## Agregar la página al objeto PdfFileWriter
    writer.addPage(first_page)
 
    ## Escribir la página en un nuevo archivo
    with open('output.pdf', 'wb') as output_pdf:
        writer.write(output_pdf)

En este ejemplo, output.pdf será un nuevo archivo PDF que contiene solo la primera página del PDF original.

Fusionar PDFs

PyPDF2 también te permite fusionar varios PDFs en uno. Esto se puede hacer utilizando la clase PdfFileMerger. Aquí tienes un ejemplo:

fusionador = PyPDF2.PdfFileMerger()
 
## Lista de PDFs para fusionar
pdfs = ['archivo1.pdf', 'archivo2.pdf', 'archivo3.pdf']
 
for pdf in pdfs:
    fusionador.append(pdf)
 
fusionador.write("fusionado.pdf")
fusionador.close()

En este ejemplo, fusionado.pdf será un nuevo archivo PDF que contiene todas las páginas de archivo1.pdf, archivo2.pdf y archivo3.pdf, en ese orden.

Agregar Contraseñas a PDFs

PyPDF2 ofrece una forma sencilla de agregar contraseñas a tus archivos PDF para una mayor seguridad. Esto se puede hacer utilizando el método encrypt() del objeto PdfFileWriter. Aquí tienes un ejemplo:

## Abrir el PDF

Por favor proporcione la traducción al español de este archivo de marcado. Evite traducir el código como: Traduzca el contenido de JSONldScript. Si hay un frontmatter, asegúrese de traducir el parámetro de idioma al correspondiente "es". Aquí está el archivo:

with open('ruta_al_archivo_pdf.pdf', 'rb') as file:
    reader = PyPDF2.PdfFileReader(file)
    writer = PyPDF2.PdfFileWriter()

    ## Copiar todas las páginas del PDF original al nuevo
    for pageNum in range(reader.numPages):
        page = reader.getPage(pageNum)
        writer.addPage(page)

    ## Encriptar el nuevo PDF
    writer.encrypt('tu_contraseña')

    ## Escribir el PDF encriptado en un archivo nuevo
    with open('encriptado.pdf', 'wb') as output_pdf:
        writer.write(output_pdf)

En este ejemplo, encriptado.pdf será un nuevo archivo PDF que es una copia del PDF original, pero encriptado con la contraseña 'tu_contraseña'.

Convertir PDFs a imágenes

Aunque PyPDF2 no admite directamente la conversión de PDFs a imágenes, se puede utilizar en combinación con otras bibliotecas como PDF2Image para lograr esto. Aquí hay un ejemplo:

from pdf2image import convert_from_path

## Convertir el PDF a una lista de imágenes
images = convert_from_path('ruta_al_archivo_pdf.pdf')

## Guardar las imágenes en archivos
for i, image in enumerate(images):
    image.save(f'imagen{i}.png', 'PNG')

En este ejemplo, cada página del PDF se convierte en una imagen PNG y se guarda en un archivo separado.

Preguntas frecuentes

¿Qué versiones de PDF admite PyPDF2?

PyPDF2 admite las versiones de PDF 1.4 a 1.7. Esto abarca una amplia gama de archivos PDF, lo que hace que PyPDF2 sea una opción versátil para manipular PDFs en Python.

¿PyPDF2 tiene alguna dependencia?

No, PyPDF2 no tiene ninguna dependencia además de la biblioteca estándar de Python. Esto facilita su instalación y uso en cualquier sistema que tenga Python instalado.

¿Qué versión de Python se requiere para ejecutar PyPDF2?

PyPDF2 requiere Python 3.6 o superior para ejecutarse. Esto garantiza la compatibilidad con las características modernas de Python y mejora el rendimiento y la seguridad general de la biblioteca.