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

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.

  1. 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>
  1. 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:

ASP.NET and PDF

Puedes descargar el ejemplo en esta liga.

¡!!! Anímate y déjanos tus comentarios a ver que te pareció este ejemplo.

Compartir

Comentarios (17)

  • Juan Manuel Responder

    Muy buen ejemplo, de donde puedo descargar el ejemplo?

    Tuesday, July 16, 2013 10:46 AM
    • José I. Estrada Responder

      Lo puedes descargar en la siguiente liga https://github.com/jiestrada/ExportASP.NET_PDF saludos

      7/16/2013 12:13:24 PM
  • Jorge Antonio Responder

    Ya lo estoy probando, buen aporte

    Tuesday, July 16, 2013 12:11 PM
  • Jose Responder

    Excelente amigo pero tengo un problema con las rutas relativas al insertar una imagen No se puede encontrar una parte de la ruta de acceso 'C:\Program Files\IIS Express\Images\logo_bimbo.jpg'.

    Tuesday, November 19, 2013 9:47 AM
    • José I. Estrada Hdz Responder

      Hola José, Puedes mandarme el código para ver cual es el problema, esa imagen "logo_bimbo.jpg" lo tienes en tu proyecto? y la carpeta tiene permisos de lectura y escritura? Saludos

      11/20/2013 8:14:01 AM
  • Rodrigo Responder

    No me funciona me entrega error en la siguiente linea Me.Page.RenderControl(hw) error: can only be called during Render(); si alguien me ayudara

    Monday, November 25, 2013 7:09 AM
  • Edgar Zambrano Responder

    Gracias por tu ejemplo, lo realice en C# y me funciono perfecto, claro me habia generado error al inicio pero era que me faltaba EnableEventValidation="false".

    Friday, July 25, 2014 12:55 PM
  • Edgar Zambrano Responder

    Tengo una pregunta, si quisiera cambiar la orientación de la página en el pdf, por ejemplo que me genere el archivo con la orientación de la hoja horizontal y no vertical como seria?

    Friday, July 25, 2014 1:00 PM
  • mily Responder

    Hola!! me da el siguiente error: "The document has no pages" en la linea "pdfDoc.Close()" A qué se refiere?

    Wednesday, August 13, 2014 7:01 AM
  • Yexon Responder

    Amigo me da el siguiente error al tratar de replicar tu ejemplo me podrias ayudar por favor. Sólo se puede llamar a RegisterForEventValidation durante Render();

    Wednesday, September 24, 2014 5:48 PM
  • Alvaro Responder

    me sale lo siguiente:"Error en el servidor remoto: (407) Se requiere autenticación del proxy."

    Friday, March 20, 2015 1:58 PM
  • joe pinedo Responder

    me da error en htmlparser.parse(sr)

    Monday, July 6, 2015 1:38 PM
  • Juan Carlos Responder

    hice el ejercicio con c#, y me marca un error en un par de imagenes que tengo, las quite y funciono pero no me respeta los estilos, incluso en el PDF de resultado me imprime las deficiciones de los estilos y las funciones javascript que tengo en el archivo aspx.

    Monday, July 27, 2015 12:28 PM
  • Jose Hernandez Responder

    Que tal. ya hice el ejemplo del codigo, y me sale un error de que no tiene acceso a mis imagenes, las cuales estan en mi proyecto, espero me puedan ayudar

    Thursday, October 29, 2015 9:58 AM
  • Wilson Lemus Responder

    Quiero saber si no tiene el mismo ejemplo pero con C#. Gracias

    Wednesday, December 23, 2015 9:37 AM
  • larva Responder

    NO SE PUEDE EXPORTAR LA IMAGEN MALDITA SEA........

    Tuesday, May 10, 2016 5:35 PM
  • Rafael Valle Responder

    Yo busco justamente esto pero para páginas asp, no asp.net

    Sunday, May 14, 2017 12:18 PM

Animate deja un comentario!!!

Eres un humano?

Últimos Tweets

Contáctanos

  • Dirección: Plutarco Elias Calles 243, Granjas México, Iztacalco, DF.

  • Teléfono:55-2712-3820 o 55-4164-9484

  • Email: info@developerji.com