Seções iMasters
.NET + Desenvolvimento

Gerando arquivos PDF com a library iTextSharp em aplicações ASP .NET Web Forms

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…

Mensagem do anunciante:

Torne-se um Parceiro de Software Intel®. Filie-se ao Intel® Developer Zone. Intel®Developer Zone

Comente também

4 Comentários

Aderlan Rodrigues

Simples(mente), sensacional!
Macoratti como sempre, artigos maravilhosos, facilitando nossa vida!
Parabéns, muito obrigado.

Giancarlo Braga

Excelente. Parabéns Macoratti!

Rafael

mas e para gerar um arquivo pdf da pagina toda , como é feito?!

Renier

Olá,

Eu gostaria de colocar uma marca de água no fundo dos relatorios, alguém pode me ajudar?

Qual a sua opinião?