Crear un PDF de una página ASPX con itextsharp.dll

Como siempre, nos metemos a realizar cosas que desconocemos con el fin de aprender y mejorar, y de ganarse problemas gratuitos por que no pagan por resolverlos, sinembargo el conocimiento que nos queda es lo que nos empieza a dar un valor ante nuestros clientes y usuarios.

En este caso el requerimiento era crear un PDF de una página ASPX, espécíficamente e uno o de algún control de nuestro código.

En medio de muchas consultas y de encontrar alternativas gratuitas que no se adaptaban a los requerimientos, así como alternativas pagas que eran muy completas pero que estaban en el orden entre los 200 y  los 1000 dolares encontré en diferentes artículos referencia a una dll que aunque no es muy vistosa en principio, permite integrar muchos elementos para ser trabajados a la hora de imprimir parte o partes de una página en PDF.

Esta biblioteca se llama itextsharp que se puede encontrar en http://sourceforge.net/projects/itextsharp/, me ha parecido una excelente librería gratuita OpenSource que permite ser trabajada con .net económizando buena parte del trabajo, sinembargo sé que se puede realizar una aplicación a la medida dependiendo de las necesidades de cada uno.

Un ejemplo sencillo fué crear una aplicación en la que tengo una imágen, además tengo texto dentro de una etiqueta (Label), a esto le añadimos un botón que nos ejecutará el código correspondiente.

Al descargar itextsharp se incluye la referencia a los dll dentro de la aplicación: itextsharp.dll / itextsharp.xtra.dll.

Referencias iTextSharp

El código para este ejercicio es sencillo, sinembargo por lo alcanzado a leer, existen varias clases dentro de esta librería que permite realizar cosas más complejas e incluir estilos, imágenes, estructuras e hipervínculos entre otras cosas.

Para ver la funcionalidad, en mi caso creé una aplicación web desde Visual Studio y dentro de la página Default.aspx incluí una Label lblContenido llamada  que me incluyéndole un texto cualquiera :

<asp:Label ID=«lblContenido» runat=«server»>
Primero hay que comentar que para que un control, como el Image o el ImageBrush, pueda mostrar una imagen hay que crear un objeto que herede de la clase ImageSource y establecerle la propiedad Source del control.  El objeto que hereda de ImageSource y que comúnmente se utiliza para la carga de imágenes es el BitmapImage, al cual hay que pasarle un Uri con la ubicación de la imagen a utilizar.  Al establecer la propiedad Source de los controles en el XAML el objeto TypeConverter de ésta es el encargado de crear el BitmapImage con la Uri correspondiente.
</asp:Label>

En el código utilizaremos las referencias:
using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
using System.Web;
using iTextSharp.text;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;

El botón de ejecución se llamó btnImprimir, el código asociado al evento clic de éste botón es:

protected void btnImprimir_Click(object sender, EventArgs e)
{
//System.Web.Exception opcional para manejar datos de respuesta HTTP a un cliente
Response.Clear();
Response.ContentType =«application/pdf»;
Response.Cache.SetCacheability(HttpCacheability.NoCache);

//Para crear una instancia de documento de iTextSharp con el tamaño de página y tamaño de margenes correspondientes
Document doc = new Document(PageSize.LETTER.Rotate(), 10, 10, 10, 10);
//La ruta en donde será guardado el pdf dentro del servidor
String path = this.Server.MapPath(«.») + «Archivos\\MiArchivo.pdf»;

//Utilizamos System.IO para crear o sobreescribir el archivo si existe
FileStream file = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);

//iTextSharp para escribir en el documento PDF
PdfWriter.GetInstance(doc, file);
doc.Open();
//Agregamos  el texto que esta dentro de la etiqueta
     //Se pueden agregar varios solamente añadiendo varias sentencias doc.Add(…)    
doc.Add(new Paragraph(lblContenido.Text));
doc.Close();

Process.Start(path);
}

Al ejecutar el código anterior se crea el documento PDF dentro del la ruta que se especifico dentro del servidor, debemos recordar crear la carpeta Archivos dentro del directorio raiz de nuestra aplicación que es el lugar que estamos apuntándole dentro de la variable path.

Como se mencionó, esto solo exporta texto al PDF, seguiremos explorando en esta librería en la medida de las posibilidades y las necesidades, espero que esto les haya servido como base al respecto del tema.

Anuncio publicitario

2 comentarios sobre “Crear un PDF de una página ASPX con itextsharp.dll

Agrega el tuyo

  1. Hola muy bueno tu aporte, pero tengo un problema y queria ver si me ayudas creo el pdf (con itextSharp obviamente) sin ningun problema y lo envio al cliente para que descarga, pero igual quiero que quede en el servidor pero no puedo

    Me gusta

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

Subir ↑

A %d blogueros les gusta esto: