Saltar al contenido

python

Cómo dividir un PDF en Python en varias páginas con PyPDF2

Este tutorial explica cómo dividir un pdf en Python en varias páginas o cómo extraer una página de un documento gracias a la librería PyPDF2.

Dividir un PDF en Python en varias páginas con PyPDF2

Python es un lenguaje muy versátil que nos permite automatizar infinidad de tareas. En este tutorial te voy a mostrar cómo dividir un PDF en Python en varias páginas gracias a la librería PyPDF2.

Qué es PyPDF2

PyPDF2 es una librería para manejo de PDFs que, entre otras cosas, nos brinda las siguientes funcionalidades:

  • Extraer información de un documento (título, autor, …).
  • Dividir documentos por páginas.
  • Fusionar varios documentos en uno solo.
  • Recortar páginas de un documento.
  • Fusionar múltiples páginas en una sola.
  • Cifrar y descifrar archivos PDF.

Instalar PyPDF2

Lo primero que debes hacer para usar PyPDF2 es instalarla, ya que es una librería de terceros. Así que crea un entorno virtual, actívalo y ejecuta el siguiente comando:

$> pip install PyPDF2

Obtener una página de un documento PDF

A continuación, te voy a mostrar cómo extraer una página de un PDF en un nuevo documento usando esta librería. Para ello, he definido una función llamada extract_page(doc_name, page_num). El parámetro doc_name es la ruta completa del documento. Si el documento se encuentra en la misma ruta que el programa Python, basta con indicar el nombre. Por su parte, el parámetro page_num es el número de página a extraer (cuidado porque la primera página comienza por el índice 0):

from PyPDF2 import PdfFileWriter, PdfFileReader


def extract_page(doc_name, page_num):
    pdf_reader = PdfFileReader(open(doc_name, 'rb'))

    pdf_writer = PdfFileWriter()
    pdf_writer.addPage(pdf_reader.getPage(page_num))
    with open(f'document-page{page_num}.pdf', 'wb') as doc_file:
        pdf_writer.write(doc_file)

Dividir un PDF en Python a partir de un número de página

En este apartado veremos una nueva función que permite dividir un PDF en Python en dos a partir de un número de página. La función la he llamado split_pdf(doc_name, page_num). Al igual que la anterior, el parámetro doc_name es la ruta o el nombre del documento. page_num indica el número de página que se utilizará para dividir el documento en dos (la primera página comienza por el índice 0):

def split_pdf(doc_name, page_num):
    pdf_reader = PdfFileReader(open(doc_name, "rb"))
    pdf_writer1 = PdfFileWriter()
    pdf_writer2 = PdfFileWriter()

    for page in range(page_num):
        pdf_writer1.addPage(pdf_reader.getPage(page))

    for page in range(page_num, pdf_reader.getNumPages()):
        pdf_writer2.addPage(pdf_reader.getPage(page))

    with open("doc1.pdf", 'wb') as file1:
        pdf_writer1.write(file1)

    with open("doc2.pdf", 'wb') as file2:
        pdf_writer2.write(file2)

Como resultado, la función genera dos documentos llamados doc1.pdf y doc2.pdf. La puedes optimizar a tu gusto, por ejemplo, para indicar los nombres de los documentos resultantes o para hacer más divisiones.

Newsletter EstrategIA

Programar con IA sin perder el control

Si te ha interesado este artículo, esto también te va a interesar. Cada dos martes te cuento qué funciona y qué no al construir software con agentes de IA, con ejemplos reales de mi software factory y los números de mis proyectos, sin maquillar.

9.277 desarrolladores y profesionales ya la leen martes quincenales

EstrategIA Próximo número · martes

Lo que recibes

  1. Qué funciona (y qué no) programando con agentes de IA
  2. Casos reales de MaIA y DGC: decisiones, errores y resultados
  3. Los números de mis proyectos, sin maquillar
  4. Una idea que puedes aplicar esa misma semana

Sin spam. Te das de baja con un clic.

j2logo

Sigue leyendo

Listar directorio en Python
python

Listar directorio en Python. Listar ficheros de un directorio

requests - Hacer peticiones http en Python
python

Python requests. La librería para hacer peticiones http en Python

Web scraping con Python. Guía de inicio a BeautifulSoup
python

Web scraping con Python. Extraer datos de una web. Guía de inicio de Beautiful Soup

Tutorial de SQLAlchemy
python

SQLAlchemy. Tutorial de Python SQLAlchemy. Guía de inicio