ASP .NET - Gerando arquivos PDF na web
O objetivo deste artigo é mostrar como criar arquivos em aplicações ASP .NET usando a linguagem VB .NET.
Para realizar esta tarefa vamos precisar de uma ajuda. Estou me referindo a biblioteca iTextSharp que é gratuita e pode ser obtida no seguinte endereço: http://sourceforge.net/projects/itextsharp/.
Então primeiro faça o download da library para poder referenciá-la em seu projeto web. Eu fiz o download da library e a descompactei em: C:\Program Files\itextsharp-5.0.4-dll
Para demonstrar como usar este recurso eu vou usar o Visual Web Developer 2008 Express Edition e criar um novo web site (New Web Site) usando o template ASP .NET Web Site chamado ASPNET_PDF usando a linguagem Visual Basic.(poderíamos ter usado a linguagem C#)
Agora vamos referencia a library iTextSharp em nosso projeto:
No menu WebSite selecione Add Reference e em seguida clique na aba Browse da janela Add Reference e localize o local onde você descompactou a biblioteca iTextSharp, selecionando o arquivo itextsharp.dll e clicando em OK;
Agora vamos definir o seguinte leiaute no arquivo Default.aspx :
Através do menu Table -> Insert Table Inclua uma tabela com 5 linhas e 2 colunas e a seguir inclua os seguinte controles na tabela:
Agora no arquivo code-behind Default.aspx.vb vamos definir os namespaces usados no projeto:
Imports System
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
No evento Click do botão de comando btnGerarPDF vamos fazer a chamada a rotina que iremos criar para gerar o arquivo PDF:
Protected
Sub btnGerarPDF_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnGerarPDF.Click gerarPDF(txtTextoPDF.Text, txtNomeArquivoPDF.Text) End Sub |
A rotina gerarPDF() esta usando o texto a ser gerado no arquivo PDF e o nome do arquivo pdf que será gerado.
A rotina gerarPDF() possui o seguinte código:
Private
Sub gerarPDF(ByVal texto As String, ByVal arquivo As
String) Dim hoje As DateTime = DateTime.Now If (arquivo.Contains(".pdf")) Then arquivo = arquivo.Replace(".pdf", "") End If Dim arquivoPDF = arquivo & hoje.Millisecond & ".pdf" Dim doc As Document = New Document PdfWriter.GetInstance(doc, New FileStream(Request.PhysicalApplicationPath + "\" & arquivoPDF, FileMode.Create)) doc.Open() doc.Add(New Paragraph(texto)) doc.Close() Response.Redirect("~/" & arquivoPDF) End Sub |
Vamos entender o código acima:
A primeira parte do código eu estou verificando se o nome do arquivo informado possui a extensão .pdf; neste caso eu removo a extensão.
A seguir eu monto o nome do arquivo adicionando os milisegundos da data obtida para dessa forma ter um nome único de arquivo a cada geração.
A seguir é que entra a criação do arquivo PDF:
- criamos uma instância de um documento através da classe Document;
- criamos um arquivo PDF usando o nome gerado usando a propriedade Request.PhysicalApplicationPath que obtém o caminho do Sistema de arquivos físico do diretório raiz do aplicativo de servidor atualmente em execução. Dessa forma os arquivos serão gerados na raiz da aplicação;
- Abrimos o documento e incluímos o texto informado e depois fechamos o documento;
- Para exibir o documento usamos o Response.Redirect;
Na figura a seguir vemos o resultado do arquivo PDF gerado sendo exibido:
Viu como é simples gerar arquivos PDF em aplicações web usando o iTextSharp. É claro que existem outros recursos que não foram mostrados, através dos quais podemos gerar documentos mais complexos, mas eu pretendo mostrar isso em outro artigo.
Até o próximo artigo ASP .NET.
Pegue o projeto completo aqui: ASPNET_PDF.zip
Eu sei é apenas ASP .NET, mas eu gosto...
Referências: