1. Introducción a PDFPlumber
Extracción de tablas y estructuras complejas con PDFPlumber
PDFPlumber es perfecto para extraer datos de PDF, especialmente tablas y estructuras complejas como columnas. Permite reconocer y extraer datos que son difíciles de obtener usando PyPDF2.
Instalación de PDFPlumber
pip install pdfplumber
Extracción de tablas con PDFPlumber
import pdfplumber
with pdfplumber.open("sample_with_table.pdf") as pdf:
for page in pdf.pages:
table = page.extract_table()
if table:
for row in table:
print(row)
Este código extrae tablas de cada página del PDF, lo cual es útil para manejar reportes financieros y analíticos donde las tablas representan los datos principales.
2. Introducción a ReportLab
Creación de reportes PDF usando ReportLab
Si quieres crear un PDF desde cero, por ejemplo, para reportes o documentos automatizados, la biblioteca ReportLab ofrece funcionalidades flexibles para construir PDFs con texto, tablas, imágenes y gráficos.
Instalación de ReportLab
pip install reportlab
Creación de un documento PDF simple
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
# Creación del PDF
pdf_file = canvas.Canvas("generated_report.pdf", pagesize=A4)
width, height = A4
# Añadiendo el título
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "Reporte de ventas")
# Añadiendo texto
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Este reporte contiene datos de ventas del último mes.")
# Guardando el PDF
pdf_file.showPage()
pdf_file.save()
Este código crea un PDF con un título y texto. También permite añadir logotipos, imágenes y otros elementos de diseño.
Creación de una tabla en PDF con ReportLab
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
# Datos para la tabla
data = [
["Mes", "Ventas"],
["Enero", "200"],
["Febrero", "300"],
["Marzo", "250"]
]
# Creando un PDF con una tabla
pdf_file = SimpleDocTemplate("sales_report.pdf", pagesize=A4)
table = Table(data)
table.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
]))
# Construcción del PDF
elements = [table]
pdf_file.build(elements)
Este código crea una tabla y la guarda en un PDF. Usando ReportLab también puedes agregar estilos, cambiar colores, tamaños de fuente y formatear texto.
3. Regresando a PyPDF2
¿Por qué PyPDF2?
Como ya sabes, los documentos PDF son prácticamente un estándar para todo tipo de documentación, desde reportes hasta white papers. Pero cuando se trata de automatización, trabajar con PDFs en Python puede ser un verdadero dolor de cabeza. PyPDF2 te ayuda a salir de ese embrollo: permite extraer texto, combinar y dividir páginas, ¡y mucho más! Trabajar con ella es toda una delicia. En resumen, es como una buena taza de café por la mañana para un coder, solo que no te despierta, ¡te relaja!
Vamos a recorrer rápidamente las funciones básicas que nos ofrece PyPDF2. Esto te preparará para tareas más complejas, porque sin un inicio gradual uno puede perderse fácilmente.
Importación y ejemplo básico
Lo primero que necesitamos hacer es importar la biblioteca. Como el buen viejo `import this`, pero ahora va a ejecutar ciertas tareas.
import PyPDF2
Como ejemplo simple, intentemos abrir un documento PDF y leerlo.
# Abrimos un archivo en modo binario para lectura
with open('example.pdf', 'rb') as pdf_file:
# Creamos un objeto PDFReader
pdf_reader = PyPDF2.PdfReader(pdf_file)
# Extraemos texto de la primera página
page = pdf_reader.pages[0]
text = page.extract_text()
print(text)
Este código hace todo lo necesario para empezar: abre un documento PDF, extrae texto de la primera página y lo muestra. Simple y directo.
Descripción general de las funcionalidades de PyPDF2
PyPDF2 ofrece muchas funciones para trabajar con PDF:
- Extracción de texto: ya lo vimos.
- Combinar PDFs: creamos un nuevo documento PDF, combinando varios existentes.
- División de páginas: seleccionamos las páginas necesarias y las guardamos en archivos separados.
- Añadir anotaciones y comentarios: ¡esto ya es un nivel alto!
En este punto deberías tener una idea general de cómo funciona PyPDF2 y qué posibilidades ofrece. Por supuesto, no es posible dominar todo en una sola lección, pero vamos a aprender poco a poco lo que esta biblioteca tiene para ofrecer.
Feedback y errores típicos
Muchas veces el código no funciona a la primera, y cada aprendizaje se convierte en "cazar el bug". El error más común al usar PyPDF2 es una ruta incorrecta al archivo. Asegúrate de que tu documento PDF esté en el mismo directorio que tu script, o especifica la ruta completa. Además, no olvides abrir archivos en modo binario ('rb'), ya que ayuda a evitar problemas de codificación. Como dijo un sabio programador, "Los bugs no son errores en tu código, ¡son simplemente características inesperadas!"
GO TO FULL VERSION