Trabajar con archivos PDF en Python: guía completa de la librería PyPDF2
PDF es uno de los formatos más populares para documentos electrónicos. Sin embargo, manipularlo, como unir, dividir, cifrar o extraer texto, requiere herramientas fiables. En Python, una de las librerías más populares y estables para trabajar con PDF es PyPDF2.
PyPDF2 permite al desarrollador leer, editar y crear archivos PDF, así como obtener metadatos, gestionar páginas, añadir protección e incluso incrustar marcas de agua. Es una herramienta potente tanto para automatizar flujos de documentos como para integrarse con otros servicios.
¿Qué es PyPDF2?
PyPDF2 es una librería de Python para trabajar con archivos PDF, desarrollada como una versión mejorada de la librería original PyPDF. Proporciona una API de alto nivel para leer, escribir y modificar documentos PDF sin necesidad de comprender la estructura interna del formato PDF.
Principales funcionalidades de la librería
- Lectura y extracción de texto de archivos PDF
- Combinación de varios documentos PDF
- División de PDF en páginas individuales
- Añadir marcas de agua y superponer páginas
- Cifrado y descifrado de archivos PDF
- Trabajo con metadatos de documentos
- Rotación y escalado de páginas
- Trabajo con marcadores e índice
Instalación de PyPDF2
La instalación de la librería se realiza a través de pip:
pip install PyPDF2
Para un funcionamiento más estable, se recomienda instalar también las dependencias adicionales:
pip install PyPDF2[crypto]
Clases y componentes principales
PdfReader
La clase PdfReader está diseñada para leer archivos PDF. Proporciona acceso a las páginas, metadatos y otra información del documento.
PdfWriter
La clase PdfWriter se utiliza para crear nuevos archivos PDF o modificar los existentes. Permite añadir páginas, aplicar cifrado y cambiar metadatos.
PdfMerger
La clase PdfMerger se especializa en combinar varios archivos PDF en un solo documento, con la posibilidad de configurar el orden de las páginas.
Operaciones básicas con PDF
Lectura de archivos PDF
from PyPDF2 import PdfReader
# Cargar un archivo PDF
reader = PdfReader("example.pdf")
# Obtener el número de páginas
print(f"Número de páginas: {len(reader.pages)}")
# Extraer texto de la primera página
first_page = reader.pages[0]
text = first_page.extract_text()
print(text)
Extraer texto de todas las páginas
from PyPDF2 import PdfReader
reader = PdfReader("example.pdf")
full_text = ""
for page_num, page in enumerate(reader.pages):
text = page.extract_text()
full_text += f"--- Página {page_num + 1} ---\n{text}\n\n"
print(full_text)
Verificar información del documento
from PyPDF2 import PdfReader
reader = PdfReader("example.pdf")
# Verificar si está cifrado
if reader.is_encrypted:
print("El archivo está cifrado")
else:
print("El archivo no está cifrado")
# Obtener dimensiones de la primera página
page = reader.pages[0]
print(f"Tamaño de página: {page.mediabox}")
print(f"Rotación: {page.rotation} grados")
Combinar archivos PDF
Combinación simple
from PyPDF2 import PdfMerger
merger = PdfMerger()
# Añadir archivos
merger.append("file1.pdf")
merger.append("file2.pdf")
merger.append("file3.pdf")
# Guardar el resultado
merger.write("merged_document.pdf")
merger.close()
Combinación especificando un rango de páginas
from PyPDF2 import PdfMerger
merger = PdfMerger()