Generación de Documentos PDF con reportlab en Python

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.

Python
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.

Python
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.

Python
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.

Python
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