Última actualización: 29 de enero, 2025

En este artículo, le guiaremos sobre cómo trabajar con archivos PDF usando Python. Para esto, utilizaremos la biblioteca pypdf.
Usando la biblioteca pypdf, demostraremos cómo realizar las siguientes operaciones en Python:
- Extracción de texto de PDFs
- Rotación de páginas de PDF
- Fusión de múltiples PDFs
- División de PDFs en archivos separados
- Adición de marcas de agua a las páginas de PDF
Nota: Este artículo cubre muchos detalles valiosos, así que siéntase libre de saltar a las secciones que más le interesen. El contenido está organizado para una navegación fácil, para que pueda enfocarse rápidamente en lo más relevante para usted.

Códigos de Ejemplo
Puede descargar todo el código de ejemplo utilizado en este artículo desde el siguiente enlace. Incluye el código, los archivos de entrada y los archivos de salida.
Instalación de pypdf
Para instalar pypdf, simplemente ejecute el siguiente comando en su terminal o símbolo del sistema:
pip install pypdf
Nota: El comando anterior es sensible a mayúsculas y minúsculas.
1. Extrayendo texto de un archivo PDF usando Python
Explicación del Código
1. Creando un Objeto Lector de PDF
reader = PdfReader(pdf_file)
PdfReader(pdf_file)
carga el archivo PDF en un objeto lector.- Este objeto permite acceder a las páginas y su contenido.
2. Recorriendo las Páginas
for page_number, page in enumerate(reader.pages, start=1):
reader.pages
devuelve una lista de páginas en el PDF.enumerate(..., start=1)
asigna un número de página comenzando desde 1.
3. Imprimiendo el Texto Extraído
print(f"Page {page_number}:")
print(page.extract_text())
print("-" * 50) # Separador para mejor legibilidad
page.extract_text()
extrae el contenido de texto de la página actual.- El script imprime el texto extraído junto con el número de página.
"-" * 50
imprime una línea separadora (--------------------------------------------------
) para una mejor legibilidad.
Archivo PDF de Entrada Usado en el Código
- Archivo de Entrada: Enlace de Descarga
Salida del Código
2. Rotando Páginas de PDF usando Python
Explicación del Código
El código básicamente rota la primera página 90° en sentido horario y guarda el PDF modificado sin afectar a otras páginas.
1. Importar Clases Necesarias
from pypdf import PdfReader, PdfWriter
PdfReader
: Lee el PDF de entrada.PdfWriter
: Crea un nuevo PDF con modificaciones.
2. Definir Rutas de Archivos de Entrada y Salida
input_pdf = "pdf-to-rotate/input.pdf"
output_pdf = "pdf-to-rotate/rotated_output.pdf"
- El script lee desde
input.pdf
y guarda el archivo modificado comorotated_output.pdf
.
3. Leer el PDF y Crear un Objeto Escritor
reader = PdfReader(input_pdf)
writer = PdfWriter()
reader
carga el PDF existente.writer
se usa para almacenar las páginas modificadas.
4. Rotar la Primera Página 90 Grados
page = reader.pages[0]
page.rotate(90) # Rotar 90 grados en sentido horario
writer.add_page(page)
- Extrae la página 1, la rota 90 grados, y la añade al nuevo PDF.
5. Añadir Páginas Restantes Sin Cambios
for i in range(1, len(reader.pages)):
writer.add_page(reader.pages[i])
- Recorre las páginas restantes y las añade tal como están.
6. Guardar el Nuevo PDF
with open(output_pdf, "wb") as file:
writer.write(file)
- Abre
rotated_output.pdf
en modo de escritura binaria y guarda el nuevo PDF.
7. Imprimir Confirmación
print(f"Páginas rotadas guardadas en {output_pdf}")
- Muestra un mensaje de éxito.
Archivo PDF de Entrada Usado en el Código y Su Salida Rotada
- Archivo PDF de Entrada: Enlace de Descarga
- Archivo PDF Salida Rotado: Enlace de Descarga
Captura de Pantalla
3. Fusionar Archivos PDF usando Python
Este script de Python demuestra cómo fusionar múltiples archivos PDF de un directorio en un solo PDF usando la biblioteca PyPDF.
Explicación del Código
- Este script fusiona automáticamente todos los archivos PDF encontrados en el directorio especificado (
pdfs-to-merge
) en un solo archivo de salida (merged_output.pdf
). - Asegura que el directorio de salida exista y añade las páginas de cada PDF en el orden en el que están listadas.
- Produce el archivo final fusionado en el subdirectorio
output-dir
.
Desglose del Código
1. Importar Librerías
import os
from pypdf import PdfReader, PdfWriter
os
: Utilizado para interactuar con el sistema de archivos, como leer directorios y gestionar rutas de archivos.PdfReader
: Lee el contenido de un archivo PDF.PdfWriter
: Crea y escribe un nuevo archivo PDF.
2. Definir Directorio y Archivo de Salida
directory = "pdfs-to-merge"
output_file = "output-dir/merged_output.pdf"
directory
: Especifica la carpeta donde se almacenan los archivos PDF.output_file
: Define el nombre y la ruta del archivo PDF fusionado.
3. Crear Directorio de Salida si No Existe
os.makedirs(os.path.join(directory, "output-dir"), exist_ok=True)
- Esto asegura que el directorio de salida exista, y si no, lo crea.
4. Crear un Objeto PdfWriter
writer = PdfWriter()
writer
se usa para recolectar y combinar todas las páginas de los PDFs.
5. Iterar Sobre Todos los Archivos PDF en el Directorio
for file_name in sorted(os.listdir(directory)):
if file_name.endswith(".pdf"):
file_path = os.path.join(directory, file_name)
print(f"Añadiendo: {file_name}")
- Este bucle recorre todos los archivos en el directorio especificado, comprobando archivos con extensión
.pdf
. Usasorted()
para procesarlos en orden alfabético.
6. Leer Cada PDF y Añadir Páginas al Writer
reader = PdfReader(file_path)
writer.append(reader)
- Para cada PDF,
PdfReader
lee el archivo, y luego todas las páginas de ese PDF se añaden awriter
.
7. Escribir el PDF Fusionado en un Archivo de Salida
output_path = os.path.join(directory, output_file)
with open(output_path, "wb") as output_pdf:
writer.write(output_pdf)
- Después de recopilar todas las páginas,
writer.write()
escribe el PDF fusionado en la ruta de salida especificada.
8. Imprimir Confirmación
print(f"PDF fusionado guardado como: {output_path}")
- Imprime un mensaje de éxito confirmando la ubicación del archivo PDF fusionado guardado.
Archivos PDF de Entrada Usados en el Código y el PDF de Salida Fusionado
- Archivos PDF de Entrada: Enlace de Descarga
- PDF de Salida Fusionado: Enlace de Descarga
4. Dividir un PDF usando Python
Explicación del Código
El script de Python anterior divide un PDF en páginas separadas usando la biblioteca PyPDF. Primero asegura que el directorio de salida exista, luego lee el archivo PDF de entrada. El script recorre cada página, crea un nuevo objeto PdfWriter, y guarda cada página como un archivo PDF individual. Los archivos de salida se nombran secuencialmente (por ejemplo, page_1.pdf, page_2.pdf) y se almacenan en la carpeta output-dir
. Finalmente, imprime un mensaje de confirmación para cada archivo creado y notifica cuando el proceso ha concluido.
Archivo PDF de Entrada y Archivos de Salida Divididos
- Archivo PDF de Entrada: Enlace de Descarga
- Archivos de Salida Divididos: Enlace de Descarga
5. Añadiendo una Marca de Agua a un PDF usando Python
Puede añadir una marca de agua a un PDF usando la biblioteca PyPDF sobreponiendo un PDF de marca de agua sobre un PDF existente. Asegúrese de que el PDF de marca de agua tenga una sola página para que se aplique correctamente a cada página del PDF principal.
Explicación del Código
El script de Python anterior lee un PDF de entrada, extrae un PDF de marca de agua de una sola página, superpone la marca de agua en cada página del PDF de entrada y guarda el PDF final con la marca de agua.
Desglose del Código
Aquí tiene una breve explicación de cada parte:
1. Importar Clases Necesarias
from pypdf import PdfReader, PdfWriter
PdfReader
se utiliza para leer PDFs existentes.PdfWriter
se utiliza para crear y escribir un nuevo PDF.
2. Definir Rutas de Archivos
input_pdf = "pdf-to-watermark/input.pdf"
watermark_pdf = "pdf-to-watermark/watermark.pdf"
output_pdf = "pdf-to-watermark/output_with_watermark.pdf"
input_pdf
: El PDF original al que se añadirá la marca de agua.watermark_pdf
: Un PDF de una sola página que sirve como marca de agua.output_pdf
: El archivo de salida que contendrá las páginas con la marca de agua.
3. Leer PDFs
reader = PdfReader(input_pdf)
watermark = PdfReader(watermark_pdf)
reader
: Lee el PDF de entrada.watermark
: Lee el PDF de marca de agua.
4. Crear un Objeto Writer
writer = PdfWriter()
- Este se usará para crear el PDF final con marca de agua.
5. Extraer Página de Marca de Agua
watermark_page = watermark.pages[0]
- Supone que el PDF de marca de agua tiene solo una página, que se usa para superponer en todas las páginas.
6. Recorrer Páginas del PDF de Entrada y Fusionar Marca de Agua
for page in reader.pages:
# Mezcla la marca de agua con la página actual
page.merge_page(watermark_page)
# Añade la página fusionada al escritor
writer.add_page(page)
- Itera a través de cada página de
input_pdf
. merge_page(watermark_page)
superpone la marca de agua encima de la página actual.- Añade la página modificada al
writer
.
7. Guardar el PDF con Marca de Agua
with open(output_pdf, "wb") as output_file:
writer.write(output_file)
- Escribe las páginas modificadas en un nuevo archivo PDF.
8. Imprimir Confirmación
print(f"PDF con marca de agua guardado como: {output_pdf}")
- Imprime la ruta del archivo de salida para confirmación.
PDF de Entrada, PDF de Marca de Agua y PDF de Salida con Marca de Agua
- Archivo PDF de Entrada: Enlace de Descarga
- Archivo PDF de Marca de Agua: Enlace de Descarga
- Archivo PDF de Salida con Marca de Agua: Enlace de Descarga
Captura de Pantalla
Conclusión
En esta guía, exploramos operaciones esenciales de PDF en Python, incluyendo la extracción de texto, rotación de páginas, fusión, división y adición de marcas de agua. Con estas habilidades, ahora puede construir su propio gestor de PDFs y automatizar varias tareas de PDF de manera eficiente.