Neste artigo, veremos como criar arquivos PDF em aplicações ASP .NET usando a
linguagem VB .NET. Para realizar essa tarefa,
vamos precisar de uma ajuda. Estou me referindo à 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 esse
recurso, 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 referenciar 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 lugar 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:
- TextBox – txtTextoPDF
- TextBox –
txtNomeArquivoPDF - Button – btnGerarPDF
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 da 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()
está 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.
Na primeira parte do código, estou
verificando se o nome do arquivo informado possui a extensão
.pdf; nesse caso, eu removo a extensão.
A seguir, eu monto o nome do arquivo,
adicionando os milissegundos 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ísicos 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…