Generación de Documentos PDF con reportlab en Python
ReportLab es una librería de código abierto que permite crear documentos PDF desde Python. Se trata de una librería muy extensa y con muchas funcionalidades, desde pequeños textos y figuras geométricas a grandes gráficos e ilustraciones.
En este tutorial aprenderemos a crear documentos PDF con reportlab.
Requisitos
Para seguir este tutorial, necesitarás tener instalado Python 3 y la librería reportlab. Puedes instalar reportlab con el siguiente comando:
pip install reportlab
Creando un documento PDF vacío
Para crear un documento PDF vacío, utilizaremos la clase Document
de reportlab.
from reportlab.pdfgen import canvas
def crear_documento_vacio():
# Creamos un objeto canvas
c = canvas.Canvas("documento.pdf")
# Guardamos el documento
c.save()
if __name__ == "__main__":
crear_documento_vacio()
Este código creará un documento PDF vacío llamado «documento.pdf».
Agregando texto a un documento PDF
Para agregar texto a un documento PDF, utilizaremos la clase TextFragment
de reportlab.
from reportlab.pdfgen import canvas
def agregar_texto_a_documento():
# Creamos un objeto canvas
c = canvas.Canvas("documento.pdf")
# Creamos un objeto TextFragment
text = "Este es un texto"
t = canvas.TextFragment(text, fontName="Helvetica", fontSize=12)
# Agregamos el texto al canvas
c.drawText(t, 50, 50)
# Guardamos el documento
c.save()
if __name__ == "__main__":
agregar_texto_a_documento()
Este código creará un documento PDF con el siguiente texto:
Este es un texto
Agregando imágenes a un documento PDF
Para agregar imágenes a un documento PDF, utilizaremos la librería Pillow.
from reportlab.pdfgen import canvas
from PIL import Image
def agregar_imagen_a_documento():
# Creamos un objeto canvas
c = canvas.Canvas("documento.pdf")
# Cargamos la imagen
imagen = Image.open("imagen.png")
# Agregamos la imagen al canvas
c.drawImage(imagen, 50, 50)
# Guardamos el documento
c.save()
if __name__ == "__main__":
agregar_imagen_a_documento()
Este código creará un documento PDF con la siguiente imagen:
[Image of Imagen]
Agregando formas a un documento PDF
Para agregar formas a un documento PDF, utilizaremos la clase Path
de reportlab.
from reportlab.pdfgen import canvas
def agregar_formas_a_documento():
# Creamos un objeto canvas
c = canvas.Canvas("documento.pdf")
# Creamos un objeto Path
path = canvas.Path()
path.moveTo(50, 50)
path.lineTo(100, 100)
path.lineTo(150, 50)
path.close()
# Rellenamos el path con un color
c.setFillColor("red")
c.fill(path)
# Guardamos el documento
c.save()
if __name__ == "__main__":
agregar_formas_a_documento()
Este código creará un documento PDF con el siguiente rectángulo rojo:
[Image of Rectángulo rojo]
Creando documentos PDF más complejos
Con reportlab podemos crear documentos PDF más complejos, como informes, facturas, o catálogos. Para ello, podemos utilizar las siguientes técnicas:
- Plantillas: Podemos utilizar plantillas para crear documentos PDF con un diseño predefinido.
- Formularios: Podemos crear formularios PDF que permitan a los usuarios introducir datos.
- Gráficos: Podemos agregar gráficos a