Crear un PDF con iTextSharp, C# .NET y MySQL

Vamos a crear un reporte en PDF usando la librería iTextShartp, el lenguaje C# .NET y base de datos MySQL.

En el mundo del desarrollo de software, no basta con procesar datos; el verdadero valor para un cliente o empresa está en cómo se presentan esos datos.

📌 Este contenido es parte del Hub de Ingeniería de evilnapsis.com
← Volver al hub

Ya sea para generar facturas, listas de inventario o directorios de clientes, saber transformar una base de datos MySQL en un documento PDF profesional es una de las habilidades más demandadas en el ecosistema .NET.

En esta guía definitiva, aprenderás a integrar la potencia de iTextSharp con la flexibilidad de C# para extraer información en tiempo real y darle un formato de tabla limpio y funcional.

En este tutorial aprenderás

  • Configurar una base de datos MySQL para reportes.

  • Conectar C# .NET con MariaDB/MySQL.

  • Extraer datos de la base de datos y volcarlos en tablas PDF.

  • Dar formato profesional a tus documentos o reportes con iTextSharp.

Base de datos

La base de datos que usaremos como ejemplo tiene la siguiente estructura.

-- Crear la base de datos si no existe
CREATE DATABASE IF NOT EXISTS contactos;
USE contactos;

-- Crear la tabla de contacto
CREATE TABLE IF NOT EXISTS contacto (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(255),
    apellidos VARCHAR(255),
    domicilio VARCHAR(255),
    telefono VARCHAR(255),
    email VARCHAR(255)
);

-- Insertar registros iniciales
INSERT INTO contacto (nombre, apellidos, domicilio, telefono, email) VALUES 
("Agustin", "Ramos", "Mex", "9371331142", "evilnapsis@gmail.com"),
("Prueba", "Prueba", "Prueba domicilio", "prue telefono", "Prueba email"),
("1", "2", "3", "4", "5"),
("A", "B", "C", "D", "E"),
("F", "G", "H", "I", "J");

¿Qué necesitas para empezar?

Para que este tutorial sea fluido, te recomiendo tener listos estos componentes (puedes instalarlos vía NuGet):

  1. MySql.Data: El conector oficial para comunicarnos con la base de datos.

  2. iTextSharp: La librería estándar para la creación de documentos PDF.

💡 Nota de arquitectura: Este artículo es la pieza central de nuestra serie sobre automatización de documentos. Si eres nuevo en el tema, te sugiero revisar primero cómo Conectar C# con MySQL para entender la base de datos y Crear un PDF con iTextSharp y C# .NET para saber como instalar iTextsharp y crear un PDF.

En los artículos de referencia están las instrucciones para instalar las librerías, que básicamente son: Mysql Conector y iTextsharp, es posible agregar las referencias usando NuGet.

Una vez instaladas las debemos incluir en el código:

// Librería oficial de Oracle para gestionar la conexión y comandos con bases de datos MySQL
using MySql.Data.MySqlClient; 

// Clases base de iTextSharp para la estructura del documento (elementos, fuentes, tablas)
using iTextSharp.text; 

// Clases específicas de iTextSharp para la generación y escritura de archivos en formato PDF
using iTextSharp.text.pdf; 

// Necesario para el manejo de flujos de datos (FileStream) y la creación de archivos en el disco
using System.IO;

Código

El código se los explicare por secciones, al final solo deben escribir todo junto o copiar pegar.

El código lo tengo todo en un solo archivo para facilitar el ejemplo.

Parte 1. Conexión a la base de datos

Lo primero que definiremos es la cadena de conexión a la base de datos.

// Creamos una instancia de MySqlConnectionStringBuilder para construir la cadena de conexión de forma segura
MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder();

// Definimos la dirección del servidor (en este caso, el servidor local)
builder.Server = "localhost";

// Especificamos el nombre de usuario de la base de datos
builder.UserID = "root";

// Definimos la contraseña del usuario (vacía por defecto en muchas configuraciones locales)
builder.Password = "";

// Indicamos el nombre de la base de datos a la que nos queremos conectar
builder.Database = "contactos";

Debemos colocar los datos correctamente.

Parte 2. Abrir la conexión y ejecutar el SQL

Ahora vamos a iniciar la conexión y ejecutar la consulta SQL “select * from contacto”. contacto es el nombre de la tabla de ejemplo.

// Inicializamos la conexión utilizando la cadena configurada previamente en el 'builder'
MySqlConnection con = new MySqlConnection(builder.ToString());

// Abrimos la conexión con el servidor de MySQL
con.Open();

// Creamos un objeto Command que nos permite enviar sentencias SQL a la base de datos
MySqlCommand cmd = con.CreateCommand();

// Definimos la consulta SQL (en este caso, obtenemos todos los registros de la tabla contacto)
cmd.CommandText = "select * from contacto";

// Ejecutamos la consulta y almacenamos los resultados en un DataReader para leerlos secuencialmente
MySqlDataReader reader = cmd.ExecuteReader();

En la variable “reader” el resultado de la consulta, mas a delante vamos a leerlos.

Parte 3. Iniciar el documento PDF

Vamos a crear el PDF con itextsharp, el PDF se guardara con el nombre “reporte.pdf”, también colocaremos el encabezado “REPORTE DE CONTACTO”, se puede cambiar según sus necesidades.

// 1. Creamos la instancia del documento que representará nuestro PDF
Document doc = new Document(); 

// 2. Configuramos el escritor para enlazar el documento con un archivo físico en el disco
// Se crea el archivo "reporte.pdf"; si ya existe, se sobrescribe (FileMode.Create)
PdfWriter.GetInstance(doc, new FileStream("reporte.pdf", FileMode.Create)); 

// 3. Abrimos el documento para comenzar a insertar contenido
doc.Open(); 

// 4. Configuramos el título: definimos la fuente (Times New Roman), tamaño (28) y color (Azul)
Paragraph title = new Paragraph(); 
title.Font = FontFactory.GetFont(FontFactory.TIMES, 28f, BaseColor.BLUE); 
title.Add("PDF con iTextSharp, C# .NET y MySQL"); 

// 5. Agregamos el título configurado al documento
doc.Add(title); 

// 6. Insertamos un párrafo vacío para generar un espacio en blanco y separar el título de la tabla
doc.Add(new Paragraph(" "));

Parte 4. Encabezado de la tabla

Ahora vamos a crear el encabezado de la tabla.

💡 Tip de diseño: Si quieres profundizar en el manejo de celdas, colores y bordes, revisa nuestra guía sobre cómo agregar tablas en un PDF con iTextSharp paso a paso.

En el siguiente codigo vamos a agregar una columna por cada campo de nuestra tabla de datos.

// Definimos la estructura de la tabla especificando el número de columnas (6 en este caso)
// Esto debe coincidir exactamente con los campos que traeremos de la base de datos
PdfPTable table = new PdfPTable(6); 

// Creamos la fila de encabezado (Header)
// Estas celdas se agregan de izquierda a derecha en el orden definido
table.AddCell("Id"); 
table.AddCell("Nombre"); 
table.AddCell("Apellidos"); 
table.AddCell("Domicilio"); 
table.AddCell("Telefono"); 
table.AddCell("Email");

Ancho de columnas: Por defecto, iTextSharp divide las columnas con el mismo ancho. Si el campo “Email” o “Domicilio” necesita más espacio, se puede usar table.SetWidths(new float[] { 1f, 2f, 2f, 3f, 2f, 3f });.

Recordar que al crear el PdfTable hay que agregar el numero de columnas, en este caso son 6.

Parte 5. Agregar los datos a la tabla del PDF

Ahora vamos a recorrer el “reader” que contiene los datos de la base de datos y los vamos a agregar en la tabla del PDF.

// Recorremos los registros obtenidos por el DataReader uno a uno
while (reader.Read()) 
{ 
    // Extraemos los datos de cada columna por su nombre y los añadimos como celdas a la tabla
    // El número de filas en el PDF dependerá de cuántos registros devuelva la consulta SQL
    table.AddCell(reader.GetString("id")); 
    table.AddCell(reader.GetString("nombre")); 
    table.AddCell(reader.GetString("apellidos")); 
    table.AddCell(reader.GetString("domicilio")); 
    table.AddCell(reader.GetString("telefono")); 
    table.AddCell(reader.GetString("email")); 
} 

// Una vez llena la tabla con todos los datos del ciclo, la añadimos al objeto documento (PDF)
doc.Add(table);

Al usar la función GetString(param) lleva como parámetro el nombre del campo de la tabla de la base de datos. El orden de los datos debe encajar con la cabecera o primera fila.

Parte 6. Cerrar todo

Por ultimo vamos a cerrar el documento PDF y la conexión a la base de datos.

// Finalizamos la edición del PDF y guardamos los cambios en el archivo físico
// Es crucial cerrar el documento para que el archivo no quede "en uso" por el sistema
doc.Close();

// Cerramos la conexión con el servidor MySQL para liberar el hilo de ejecución
// Esto permite que el servidor acepte nuevas conexiones sin saturarse
con.Close();

Resultado

El resultado es el PDF que se va a guardar en la carpeta donde ejecutamos el script, en mi caso en en GenPdfMysql1\GenPdfMysql1\bin\Debug\reporte.pdf

En el resultado se puede ver el reporte de contactos, asi puedes crear cualquier reporte que quieras, de ventas o compras.

💡Tip adicional: Si ya quieres hacer un reporte mas profesional Aprende a agregar Imagenes con iTextSharp y C# .NET para poder agregar logo y graficos a tu reporte.

Descargar

Hemos preparado un paquete que incluye el código fuente completo, los binarios configurados y un ejemplo del PDF de salida.

  • Servidor: Dropbox

  • Contenido: Proyecto de Visual Studio (.sln), carpeta /bin y reporte de ejemplo.

[🚀 Descargar Proyecto para Visual Studio  –  Reporte PDF con C# y MySQL]

Conclusión

Este ejemplo puede ser usado para crear tus propios reportes en PDF usando C# .NET y MySQL.

Espero les ayude este articulo, si tienen dudas pueden escribirla en los comentarios.

Les invito se suscriban a mi canal de youtube https://www.youtube.com/user/evilnapsis

Saludos a todos!

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Evilnapsis

Subscribe now to keep reading and get access to the full archive.

Continue reading