Inicial > ASP.NET WEB FORMS, Dicas / Tips > Exportando ASP.NET para PDF

Exportando ASP.NET para PDF

Num projeto pessoal foi preciso exportar o conteúdo de 1 página ASP.NET para PDF. Pode ser facilmente feito com VB.NET ou C#.

Procurando uma biblioteca pronta para executar esta tarefa encontrei a iText.

Link para download: http://itextpdf.com/download.php

Leia a licença de uso: http://itextpdf.com/terms-of-use/agpl.php

1º.  Fazer referência a biblioteca iTextSharp.dll

2º. Na página que será exportada para PDF, englobei todo o conteúdo que será exportado em uma <div>:

</pre>
<div id="dvText">
//Conteúdo que será exportado</div>
<pre>

3º. Criei um botão com nome: btnExportaPDF, e implementei o seu evento onClick:

Protected Sub btnExportarPDF_Click(sender As Object, e As EventArgs) Handles btnExportarPDF.Click
        Dim attachment As String = "attachment; filename=Article.pdf"

        Response.ClearContent()
        Response.AddHeader("content-disposition", attachment)
        Response.ContentType = "application/pdf"

        Dim stw As StringWriter = New StringWriter()
        Dim htextw As HtmlTextWriter = New HtmlTextWriter(stw)

        Dim imageUrlAntigo As String
        imageUrlAntigo = imgTopo.ImageUrl

        imgTopo.ImageUrl = Server.MapPath("~/Assets/TopoRelatorio.jpg")

        Dim url As String = imgTopo.ImageUrl
        Dim uriImagemAdd As Uri = New Uri(url)

        Dim paragrafoImagem As Paragraph = New Paragraph()

        Dim imagem As Image = Image.GetInstance(uriImagemAdd)
        imagem.ScaleAbsolute(500, 200)

        ConteudoRelatorio.RenderControl(htextw)

        imgTopo.ImageUrl = imageUrlAntigo

        Dim document As Text.Document = New Text.Document()
        PdfWriter.GetInstance(document, Response.OutputStream)
        document.Open()

        document.Add(paragrafoImagem)
        document.Add(imagem)

        document.SetPageSize(PageSize.A4)

        Dim str As StringReader = New StringReader(stw.ToString())
        Dim htmlworker As HTMLWorker = New HTMLWorker(document)
        htmlworker.Parse(str)

        document.Close()
        Response.Write(document)
        Response.End()
    End Sub

4º: Para evitar erros do tipo: “Could not find a part of the path ‘c:\windows\…….”, tive que adicionar uma imagem do topo da página manualmente, via código, criei manualmente 1 objeto do tipo parágrafo e adicionei uma imagem, e posteriormente adicionei ao documento.

5º: Para evitar erros do tipo: “RegisterForEventValidation can only be called during Render()” deve-se adicionar a diretiva de página:

<%@ Page Title="" EnableEventValidation="false" Language="vb" AutoEventWireup="false" ... >

adicionei o atributo: EnableEventValidation=”false” setando como false.

6º: Para evitar erros do tipo: “Control ‘gridView1’ of type ‘GridView’ must be placed inside a form tag with runat=server.”, é só fazer um override do método VerifyRenderingInServerForm da página.

Em VB.NET:

Public Overloads Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)

End Sub

Em C#:

public override void VerifyRenderingInServerForm(Control control){

/* Confirms that an HtmlForm control is rendered for the specified ASP.NET
   server control at run time. */

}

Fica a dica.

Referências:
http://www.codedigest.com/Articles/ASPNET/344_Export_to_PDF_file_in_ASPNet-Gridview_to_PDF_ASPX_Page_Content_to_PDF.aspx

Create PDFs in ASP.NET – getting started with iTextSharp

  1. jean
    10 - 12 às 11:31 am

    Apresentou o seguinte erro na minha página:
    The number of columns in PdfPTable constructor must be greater than zero.

  2. denisenantes
    10 - 18 às 3:05 pm

    Quais Imports vc usou?
    O q é a função: ConteudoRelatorio.?

  1. No trackbacks yet.

Deixar uma Anotação

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Guia Ecológico

Despertando a consciência que preserva!

Viagem e Voo

Dicas para viagens, férias e voos nacionais e internacionais

Ivan Guimarães Meirelles

Analista Desenvolvedor

Void Podcast

Vazio e sem retorno de valor

Elemar DEV

Negócios, tecnologia e desenvolvimento

2,000 Things You Should Know About WPF

Everything a WPF Developer Needs to Know, in Bite-Sized Chunks

Gabriel RB.net

Blog técnico, com dicas, códigos, novidades e problemas do dia-a-dia programando.

Alexandre Valente's Blog

Experiências em tecnologia e assuntos diversos

%d blogueiros gostam disto: