Usando la libreria FPDF y python vamos a crear un archivo pdf que contenga una tabla, este ejemplo sera util para generar listados y reportes mas adelante.
Ya hemos hablado anteriormente de la libreria FPDF en Python en Crear un PDF con la libreria FPDF y Python. Donde explicamos como instalar fpdf y como hacer el uso basico.
Instalar la libreria estan facil como usar el comando pip.
pip install fpdfPara crear una tabla en FPDF disponemos de la funcion o metodo cell, que tiene como parametros, lo ancho, alto, texto, borde, alineacion y relleno de la tabla.
pdf.cell(w = 10, h = 5, txt = 'ID', border = 1, align = 'C', fill = 0)Para este ejemplo vamos a usar un array de diccionarios para listar los datos, pero mas adelante podemos usar un archivo o una base de datos.
Codigo
A continuacion les dejo el codigo que use para el ejemplo, con comentarios en las secciones importantes.
from fpdf import FPDF
#arrray de diccionarios con los datos de las personas, cada diccionario representa una persona con su id, nombre completo, edad y email
personas = [
{'id': 1, 'nombre_completo': 'Juan Pérez', 'edad': 30, 'email': 'juan.perez@example.com'},
{'id': 2, 'nombre_completo': 'María López', 'edad': 25, 'email': 'maria.lopez@example.com'},
{'id': 3, 'nombre_completo': 'Carlos Ramírez', 'edad': 35, 'email': 'carlos.ramirez@example.com'},
{'id': 4, 'nombre_completo': 'Guadalupe Vera', 'edad': 35, 'email': 'guadalupe.vera@example.com'},
{'id': 5, 'nombre_completo': 'Hector Osmar', 'edad': 35, 'email': 'hector.osmar@example.com'},
{'id': 6, 'nombre_completo': 'Jose Perez', 'edad': 35, 'email': 'jose.perez@example.com'}
]
# creacion de la instancia de la clase FPDF, donde se le asigna la orientacion, unidad de medida y formato del papel
pdf = FPDF(orientation='P', unit='mm', format='A4')
pdf.add_page()
pdf.set_font('Arial', '', 20)
pdf.text(x = 10, y = 10, txt = 'Tabla de datos')
pdf.set_font('Arial', '', 12)
pdf.ln(10)
# aqui estamos creando el encabezado de la tabla, con el metodo cell, donde se le asigna un ancho, alto, texto, borde, alineacion y relleno
pdf.cell(w = 10, h = 5, txt = 'ID', border = 1, align = 'C', fill = 0)
pdf.cell(w = 50, h = 5, txt = 'Nombre Completo', border = 1, align = 'C', fill = 0)
pdf.cell(w = 40, h = 5, txt = 'Edad', border = 1, align = 'C', fill = 0)
pdf.cell(w = 60, h = 5, txt = 'Email', border = 1, align = 'C', fill = 0)
pdf.ln(5)
# en este ciclo for estamos recorriendo el array de diccionarios, y por cada persona estamos creando una fila en la tabla, con el metodo cell, donde se le asigna un ancho, alto, texto, borde, alineacion y relleno
for persona in personas:
pdf.cell(w = 10, h = 5, txt = str(persona['id']), border = 1, align = 'C', fill = 0)
pdf.cell(w = 50, h = 5, txt = persona['nombre_completo'], border = 1, align = 'C', fill = 0)
pdf.cell(w = 40, h = 5, txt = str(persona['edad']), border = 1, align = 'C', fill = 0)
pdf.cell(w = 60, h = 5, txt = persona['email'], border = 1, align = 'C', fill = 0)
pdf.ln(5)
# generamos la salida del pdf, con el metodo output, donde se le asigna el nombre del archivo a generar
pdf.output('tabla.pdf')
Y el resultado seria el siguiente.
