Sé un Pythonista: Recibe trucos Python y accede a nuestro espacio de Slack

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

Dividir un PDF en Python en varias páginas con PyPDF2
Share on facebook
Share on twitter
Share on linkedin

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.

Si te ha resultado útil, compártelo con tus amigos 🤗

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Sé un Pythonista: Recibe trucos Python y accede a nuestro espacio de Slack

También te puede interesar

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

Últimos posts

¿Quieres ser un auténtico Pythonista? 🐍

📩 Recibe de vez en cuando trucos, scripts y tutoriales Python en español para dominar el lenguaje. No es SPAM. Date de baja cuando quieras

🥇 Accede a nuestra comunidad privada de Slack: Pythonistas-es

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

Pythonistas-es

SÉ UN AUTÉNTICO PYTHONISTA

📩 Recibe trucos, scripts y tutoriales Python

🥇 Accede a nuestra comunidad privada de Slack