[Tips] Exportar String a PDF en ASP.NET con iTextSharp

Una de las consultas recurrentes que recibo es sobre como crear pdf en ASP.NET, para esto hay varias respuestas, esta vez voy a mostrar una bastante sencilla de la mano de iTextSharp, que es una biblioteca gratis con muy buenas opciones para la generación pdf a partir de un string que almacena un HTML.

Lo primero que vamos a hacer es , mediante Nuget, obtener la biblioteca:

image

Una vez instalado, vamos a agregar (esto es opcional) una carpeta en donde estén nuestras plantillas para imprimir nuestro informe:

image

Este archivo test.html no es nada más que un archivo HTML en donde agregué el siguiente código:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

    <title></title>

</head>

<body>

    <p>Nombre:[nombre]</p>

    <p>Apellido:[apellido]</p>

    <p>Edad:[edad]</p>

</body>

</html>

Como puedes ver es bastante simple, y tambien verás que tengo [campos] que son los que vamos a remplazar con los datos que se van a agregar desde la siguiente Pagina aspx:

image

Ahora en el botón agregamos:

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

      Dim document = New Document(PageSize.A4, 50, 50, 25, 25)

      Dim output = New MemoryStream()

      Dim writer = PdfWriter.GetInstance(document, output)

      document.Open()

      Dim contents As String = File.ReadAllText(Server.MapPath("/HTMLTemplate/Test.html"))

      contents = contents.Replace("[nombre]", tx_nombre.Text)

      contents = contents.Replace("[apellido]", tx_apellido.Text)

      contents = contents.Replace("[edad]", tx_edad.Text)

 

 

      Dim parsedHtmlElements = HTMLWorker.ParseToList(New StringReader
                                                  (contents),
Nothing
)

      For Each var As IElement In parsedHtmlElements

            document.Add(TryCast(var, IElement))

      Next

   document.Close()

   Response.ContentType = "application/pdf"

   Response.AddHeader("Content-Disposition", "attachment;filename=test.pdf")

   Response.BinaryWrite(output.ToArray())

 

End Sub

Como puedes ver, estamos creando el documento con las dimensiones especificadas en el contructor, luego leemos el contenido del archivo html para finalmente reemplazar el contenido del los campos con [corchetes]. Finalmente escribimos el pdf.

image

Abrimos y listo!, PDF creado:

image

Obviamente esto es una simplificación al máximo de lo que se puede realizar , te recomiendo que visites la página del proyecto para muchas más opciones:

http://sourceforge.net/projects/itextsharp/

Saludos!.,
@chalalo

Un comentario en “[Tips] Exportar String a PDF en ASP.NET con iTextSharp”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *