Cómo exportar una página web con ASP.NET a PDF

En mi trabajo muchas ocasiones he tenido la necesidad de exportar una página web a PDF. Por eso en este artículo voy a explicar cómo exportar una página web a PDF con una imagen en ASP.Net, VB. En seguida te muestro el ejemplo y en la parte final de este artículo podrás descargar el ejemplo completo:
Puedes revisar este otro artículo donde con solo 4 líneas de código puedes exportar una página web a PDF con solo pasar la URL.
- Crea la página default.aspx y agregas el siguiente código:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" EnableEventValidation="false" Inherits="ConvertirPDF_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Image ID="Image1" runat="server" ImageUrl="http://www.developerji.com/App_Themes/Principal/Images/logo.png" /> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> <br /> <asp:Button ID="btnExportasPDF" runat="server" Text="Exportar Página a PDF" OnClick="btnExportasPDF_Click" /> <br /> <br /> Más ejemplos en: <a href="http://www.developerji.com/">http://www.developerji.com/</a> <br /> </div> </form> </body> </html>
- Agrega el siguiente código a la página default.aspx.vb
Imports System Imports System.Configuration Imports System.Data Imports System.Linq Imports System.Web Imports System.Web.Security Imports System.Web.UI Imports System.Web.UI.HtmlControls Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Imports System.Xml.Linq ' include iTextSharp Imports iTextSharp.text Imports iTextSharp.text.html.simpleparser Imports iTextSharp.text.pdf Imports System.Text Imports System.IO Partial Class ConvertirPDF_Default Inherits System.Web.UI.Page Private dt As New DataTable() Protected Sub btnExportasPDF_Click(sender As Object, e As EventArgs) Handles btnExportasPDF.Click Response.ContentType = "application/pdf" Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf") Response.Cache.SetCacheability(HttpCacheability.NoCache) Dim sw As New StringWriter() Dim hw As New HtmlTextWriter(sw) Me.Page.RenderControl(hw) Dim sr As New StringReader(sw.ToString()) Dim pdfDoc As New Document(PageSize.A4, 10.0F, 10.0F, 100.0F, 0.0F) Dim htmlparser As New HTMLWorker(pdfDoc) PdfWriter.GetInstance(pdfDoc, Response.OutputStream) pdfDoc.Open() htmlparser.Parse(sr) pdfDoc.Close() Response.Write(pdfDoc) Response.[End]() End Sub Protected Sub Page_Load1(sender As Object, e As EventArgs) Handles Me.Load dt.Columns.Add("ID", GetType(Integer)) dt.Columns.Add("Nombre", GetType(String)) dt.Columns.Add("Dirección", GetType(String)) dt.Columns.Add("Fecha", GetType(DateTime)) ' ' Here we add five DataRows. ' dt.Rows.Add(25, "José", "México", DateTime.Now) dt.Rows.Add(50, "DeveloperJI", "Distrito Federal", DateTime.Now) dt.Rows.Add(10, "Juan", "Morelos", DateTime.Now) dt.Rows.Add(21, "Fernanda", "Aguascalientes", DateTime.Now) dt.Rows.Add(100, "Alejandra", "Hidalgo", DateTime.Now) GridView1.DataSource = dt GridView1.DataBind() End Sub End Class
El resultado es el siguiente:
Puedes descargar el ejemplo en esta liga.
¡!!! Anímate y déjanos tus comentarios a ver que te pareció este ejemplo.