Início > 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

Anúncios
  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.

  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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s

dotnettips.wordpress.com/

Helping Programmers Since 1994

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

blog

so long

Fernando Franzini Blog

Engenharia de Software e Arquitetura Ágil

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: