Inicio / Blog / Python / PyPDF2 - Tutorial de Python para la manipulación de PDF

PyPDF2 - Tutorial de Python para la manipulación de PDF

Resumir con ChatGPT

¿Ya no quieres editar archivos PDF manualmente? ¿Le gustaría aprender a editar PDF con Python ser capaz de editar? Entonces PyPDF2 es justo lo que necesitas. Con esta librería Python podrás crear archivos PDF

  • juntos,
  • a repartir,
  • para encriptar,
  • descodificar

y mucho más.

Temas de este tutorial

  1. Instalación de PyPDF2 y sus dependencias

  2. Leer, escribir y copiar archivos PDF

  3. Fusiona varios archivos PDF en uno solo

  4. Dividir un archivo PDF en varios archivos

  5. Cifrar y descifrar archivos PDF

  6. Extraer texto e imágenes de PDF

  7. Añadir marcas de agua y números de página a los PDF

También comparamos PyPDF2 con otros programas de edición de PDF y analizamos sus ventajas y limitaciones. Con PyPDF2 puede automatizar sus flujos de trabajo PDF y ahorrar tiempo en ediciones manuales. Aprenda cómo empezar aquí:

Instalación de PyPDF2

Para utilizar PyPDF2, basta con instalarlo mediante pip:

  • Asegúrese de tener Python 2.7 o Python 3.x instalado en su sistema.
  • Instale PyPDF2 con pip: pip install PyPDF2

Leer, escribir y copiar archivos PDF

Con PyPDF2 puedes leer, escribir y copiar archivos PDF fácilmente. Aquí tienes un ejemplo:

import PyPDF2
# Open the PDF file
pdf_file = open('example.pdf', 'rb')
# Read the PDF file
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# Print the number of pages
print(pdf_reader.numPages)
# Get the first page
page = pdf_reader.getPage(0)
# Extract the text from the first page
text = page.extractText()
# Print the text
print(text)
# Close the PDF file
pdf_file.close()

Fusiona varios archivos PDF en uno solo

Si tienes varios archivos PDF que quieres combinar en uno solo, es fácil con PyPDF2. Aquí tienes un ejemplo:

import PyPDF2
# Open the first PDF file
pdf_file1 = open('example1.pdf', 'rb')
# Open the second PDF file
pdf_file2 = open('example2.pdf', 'rb')
# Create a PDF merger
pdf_merger = PyPDF2.PdfFileMerger()
# Add the first PDF file
pdf_merger.append(pdf_file1)
# Add the second PDF file
pdf_merger.append(pdf_file2)
# Merge the PDF files
pdf_merger.write('merged.pdf')
# Close the PDF files
pdf_file1.close()
pdf_file2.close()

Dividir un archivo PDF en varios archivos

Si tiene un archivo PDF grande que desea dividir en archivos más pequeños, PyPDF2 puede ayudarle. He aquí un ejemplo:

import PyPDF2
# Open the PDF file
pdf_file = open('example.pdf', 'rb')
# Create a PDF reader
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# Get the number of pages
num_pages = pdf_reader.numPages
# Split the PDF file into multiple files
for page_num in range(num_pages):
    # Create a PDF writer
    pdf_writer = PyPDF2.PdfFileWriter()
    # Get the page
    page = pdf_reader.getPage(page_num)
    # Add the page to the PDF writer
    pdf_writer.addPage(page)
    # Create the new PDF file
    new_file_name = 'page' + str(page_num) + '.pdf'
    new_file = open(new_file_name, 'wb')
PyPDF2 también permite crear y editar archivos PDF. Con PyPDF2 puede crear un nuevo archivo PDF desde cero o modificar un archivo existente. Puede añadir texto, imágenes y otros elementos a un archivo PDF y cambiar su estructura, propiedades y metadatos.

Una de las funciones más potentes de PyPDF2 es la posibilidad de combinar y dividir archivos PDF. Puede fusionar varios PDF en un único archivo o dividir un PDF grande en varios más pequeños. Esto puede ser útil para organizar y archivar documentos, y para crear informes y presentaciones.

Además de estas funciones básicas, PyPDF2 también ofrece una serie de herramientas y utilidades para trabajar con archivos PDF. Entre ellas se incluyen:

Cifrado y descifrado de PDF

Con PyPDF2 puedes encriptar y desencriptar archivos PDF, soportando tanto contraseñas de usuario como de propietario. Aprende a encriptar un archivo PDF con PyPDF2 aquí:

import PyPDF2
pdf_file = open('input.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
pdf_writer = PyPDF2.PdfFileWriter()
pdf_writer.addPage(pdf_reader.getPage(0))
pdf_writer.encrypt('user_password', 'owner_password')
result_pdf = open('encrypted.pdf', 'wb')
pdf_writer.write(result_pdf)
result_pdf.close()
pdf_file.close()

En este código, primero abrimos el archivo PDF de entrada y creamos un objeto PDF Reader. A continuación, creamos un objeto PDF Writer y le añadimos la primera página del archivo PDF de entrada. Por último, ciframos el archivo PDF con una contraseña de usuario y una contraseña de propietario y guardamos el resultado como un nuevo archivo.

Descifrar archivos PDF con Python

Para descifrar un archivo PDF, puede utilizar el siguiente código:

import PyPDF2
pdf_file = open('encrypted.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
if pdf_reader.isEncrypted:
    pdf_reader.decrypt('password')
page = pdf_reader.getPage(0)
text = page.extractText()
print(text)
pdf_file.close()

Primero abrimos el archivo PDF cifrado y creamos un objeto de lectura PDF. A continuación, comprobamos si el archivo PDF está cifrado y, en caso afirmativo, lo desciframos con la contraseña. Extraemos el texto de la primera página del archivo PDF y lo enviamos a la consola.

Extraer texto e imágenes de PDF

PyPDF2 permite extraer texto e imágenes de archivos PDF, con opciones para filtrar y procesar la salida si el texto y las imágenes están incrustados en el PDF nativo digital. Si este no es el caso, eche un vistazo a nuestro tutorial pytesseract an. Aquí puedes ver cómo extraer texto de un archivo PDF con PyPDF2:

import PyPDF2
pdf_file = open('input.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
text = ''
for page in range(pdf_reader.getNumPages()):
    text += pdf_reader.getPage(page).extractText()
print(text)
pdf_file.close()

En este código, primero abrimos el archivo PDF de entrada y creamos un objeto lector de PDF. A continuación, recorremos cada página del archivo PDF y extraemos el texto. Concatenamos el texto de cada página y lo enviamos a la consola.

Para extraer imágenes de un archivo PDF, puede utilizar el siguiente código:

import PyPDF2
pdf_file = open('input.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
for page in range(pdf_reader.getNumPages()):
    xObject = pdf_reader.getPage(page).getObject()['/Resources']['/XObject'].getObject()
    for obj in xObject:
        if xObject[obj]['/Subtype'] == '/Image':
            size = (xObject[obj]['/Width'], xObject[obj]['/Height'])
            data = xObject[obj]._data
            print(size, len(data))
pdf_file.close()

Conversión de PDF a otros formatos con PyPDF2

PyPDF2 es una potente biblioteca de Python que permite convertir archivos PDF en otros formatos como HTML, XML y texto sin formato. Esto puede ser útil si necesita extraer ciertos datos de un archivo PDF o desea mostrar el contenido de un archivo PDF en un sitio web. He aquí un ejemplo de conversión de un PDF a texto plano con PyPDF2:

import PyPDF2
# Open the PDF file
pdf_file = open('example.pdf', 'rb')
# Create a PDF reader object
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# Get the first page of the PDF
page = pdf_reader.getPage(0)
# Extract the text from the page
text = page.extractText()
# Print the text
print(text)
# Close the PDF file
pdf_file.close()

En este ejemplo, abrimos el archivo PDF en modo binario y creamos un objeto PDF Reader. A continuación, obtenemos la primera página del archivo PDF y extraemos el texto de ella con el método extractText(). Por último, se imprime el texto extraído.

Extraer y modificar marcadores, anotaciones y campos de formulario con PyPDF2

PyPDF2 permite extraer y modificar diversos elementos de un archivo PDF, incluidos marcadores, anotaciones y campos de formulario. Esto puede ser útil si desea automatizar ciertas tareas o extraer determinados datos de un archivo PDF. He aquí un ejemplo de cómo extraer marcadores de un archivo PDF utilizando PyPDF2:

import PyPDF2
# Open the PDF file
pdf_file = open('example.pdf', 'rb')
# Create a PDF reader object
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# Get the bookmarks from the PDF
bookmarks = pdf_reader.getOutlines()
# Print the bookmarks
for bookmark in bookmarks:
    print(bookmark.title)
# Close the PDF file
pdf_file.close()

En este ejemplo, abrimos el archivo PDF en modo binario y creamos un objeto PDF Reader. A continuación, utilizamos el método getOutlines()para extraer los marcadores del archivo PDF. Por último, imprimimos los títulos de los marcadores.

Trabajar con capas PDF con PyPDF2

Las capas PDF, también conocidas como grupos de contenido opcionales, permiten controlar la visibilidad y apariencia de diferentes elementos en un archivo PDF. PyPDF2 proporciona una forma de trabajar con capas PDF para que pueda cambiar o extraer capas específicas de un PDF. A continuación se muestra un ejemplo de cómo extraer una capa específica de un archivo PDF utilizando PyPDF2:

import PyPDF2
# Open the PDF file
pdf_file = open('example.pdf', 'rb')
# Create a PDF reader object
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
# Get the first page of the PDF
page = pdf_reader.getPage(0)
# Get the layers from the page
layers = page['/OCProperties']['/OCGs']
# Print the layers
for layer in layers:
    print(layer)
# Close the PDF file
pdf_file.close()

En este ejemplo, abrimos el archivo PDF en modo binario y creamos un objeto lector de PDF. A continuación, obtenemos la primera página del archivo PDF y extraemos de ella las capas con la sintaxis ['/OCProperties']['/OCGs']. En este ejemplo, abrimos el archivo PDF en modo binario y creamos un objeto PDF Reader. A continuación, obtenemos la primera página del archivo PDF y extraemos de ella las capas con la sintaxis ['/OCProperties']['/OCGs']. Por último, damos los nombres de los niveles.

Conclusión

PyPDF2 es una biblioteca potente y flexible para trabajar con archivos PDF en Python. Ya sea que necesite crear, modificar o extraer información de un PDF, PyPDF2 ofrece una amplia gama de herramientas y utilidades para ayudarle a hacer el trabajo. Si usted es un desarrollador, investigador o simplemente alguien que necesita trabajar con archivos PDF de forma regular, PyPDF2 es definitivamente vale la pena un vistazo.

Descubre nuestra Categoría Python con artículos útiles en torno al tema.

¿Le ha resultado útil esta página?

Gracias por sus comentarios.

¿Podría darme su opinión? (anónimo)

Desarrollamos software de inteligencia artificial para empresas y evitamos deliberadamente los molestos banners publicitarios. A través de nuestros artículos, documentamos temas que nos ocupan e interesan y también financian nuestro pan de cada día.

Como nuestro contenido es gratuito, sus comentarios son nuestro elogio.

Cada autor lee personalmente tus comentarios anónimos, aunque la IA podría automatizarlos, e integra las sugerencias constructivas directamente en la siguiente revisión o las utiliza como inspiración para el siguiente artículo.



    </artículo
    • Florian Zyprian
      (Autor)

      Como Director Técnico de Helm & Nagel GmbH, la empresa que está detrás del Konfuzio.

    es_ESES