Evilnapsis

Programming, Hacking and More

Desktop Development

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.

Este articulo esta basado en previos artículos que puedes encontrar en el sitio: Conectar C# y Mysql y Agregar tabla en PDF con iTextSharp.

Base de datos

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

create database contactos;
use contactos;

create table contacto(
	id int not null auto_increment primary key,
	nombre varchar(255),
	apellidos varchar(255),
	domicilio varchar(255),
	telefono varchar(255),
	email varchar(255)
);

insert into contacto (nombre, apellidos, domicilio, telefono, email) values ("Agustin","Ramos","Mex","9371331142","evilnapsis@gmail.com");
insert into contacto (nombre, apellidos, domicilio, telefono, email) values ("Prueba","Prueba","Prueba domicilio","prue telefono","Prueba email");
insert into contacto (nombre, apellidos, domicilio, telefono, email) values ("1","2","3","4","5");
insert into contacto (nombre, apellidos, domicilio, telefono, email) values ("A","B","C","D","E");
insert into contacto (nombre, apellidos, domicilio, telefono, email) values ("F","G","H","I","J");

 

Librerías Necesarias

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:

using MySql.Data.MySqlClient;
using iTextSharp.text;
using iTextSharp.text.pdf;
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. Cadena de conexión a la base de datos

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

MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder();
builder.Server = "localhost";
builder.UserID = "root";
builder.Password = "";
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.

MySqlConnection con = new MySqlConnection(builder.ToString());
con.Open();
MySqlCommand cmd = con.CreateCommand();
cmd.CommandText = "select * from contacto";
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.

Document doc = new Document();
PdfWriter.GetInstance(doc, new FileStream("reporte.pdf", FileMode.Create)); // asignamos el nombre de archivo hola.pdf
doc.Open();
Paragraph title = new Paragraph();
title.Font = FontFactory.GetFont(FontFactory.TIMES, 28f, BaseColor.BLUE);
title.Add("PDF con iTextSharp, C# .NET y MySQL");
doc.Add(title);
// Agregamos un parrafo vacio como separacion.
doc.Add(new Paragraph(" "));

Parte 4. Encabezado de la tabla

Ahora vamos a crear el encabezado de la tabla.

PdfPTable table = new PdfPTable(6);
// Esta es la primera fila
table.AddCell("Id");
table.AddCell("Nombre");
table.AddCell("Apellidos");
table.AddCell("Domicilio");
table.AddCell("Telefono");
table.AddCell("Email");

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.

while (reader.Read())
{
    // Filas N depende de la base de datos
    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"));
}
// Agregamos la tabla al documento
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.

doc.Close();
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

Descargar

A continuación les dejo 2 opciones de descarga de el código fuente completo, incluye binarios y resultado.

Al usar la opción 1 nos apoyas, debes esperar 5 segundos y después seleccionar “saltar publicidad” y te redirige a la descarga.

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!

Agustin Ramos

Desarrollador de Software

Leave a Reply