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

José Carlos Macoratti
em .NET

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:

A Mundipagg lança a inovadora API em REST, garantindo flexibilidade e simplicidade na integração. Conheça as nossas funcionalidades.

José Carlos Macoratti

é referência em Visual Basic no Brasil e autor dos livros "Aprenda Rápido: ASP" e "ASP, ADO e Banco de Dados na Internet". Mantenedor do site macoratti.net.

Comentários

Para comentar no iMasters você precisa estar logado.

O iMasters possui mais de 13 mil textos publicados, em 13 anos já somos uma comunidade de mais 350 mil pessoas. Cadastre-se agora mesmo GRATUITAMENTE e tenha acesso a todo o mundo iMasters.

Já tenho conta Quero me cadastrar
Este projeto é mantido e patrocinado pelas empresas: