VB.NET - Gerando arquivos PDF


Se você estava precisando gerar arquivos PDF usando o VB.NET e não queria comprar componentes de terceiros para completar esta tarefa, hoje você ganhou o dia.

Este artigo mostra como você pode gerar arquivos PDF usando uma biblioteca que pode ser usada sob a LGPL license.

Para poder gerar arquivos PDF você vai precisar fazer o download da biblioteca Reports.dll  que se encontra no seguinte endereço::  http://sourceforge.net/projects/report

Esta biblioteca esta sob a licença LGPL, e, isto significa que ela é livre e que pode ser utilizada juntamente com softwares comerciais.

Uma definição para LGPL pode ser assim resumida:

Criada em 1999 como 'Library GPL', esta licença é basicamente a GNU GPL com apenas uma diferença: softwares proprietários podem utilizar bibliotecas sob esta licença. Isso serve para que a biblioteca cresça na comunidade, aumentando suas chances de derrubar algum eventual rival proprietário.

Atenção para um detalhe: softwares proprietários podem rodar com ajuda destas bibliotecas, mas qualquer um que queira criar uma biblioteca embutindo código de uma sob a GNU LGPL encontrará as mesmas obrigações sociais que são impostas pela GNU GPL.

Aconselha-se o uso desta licença em bibliotecas, mas apenas naquelas que têm um rival proprietário. Se sua biblioteca é única e você a disponibiliza sob a GNU GPL diretamente, funcionará como uma vantagem exclusiva dos desenvolvedores de software livre. Conselho do Stallman.

Library GPL. Esta é variação da licença GPL que permite o desenvolvimento de programas de código aberto que contenham módulos proprietários.

Na GPL "tradicional" todo o código do programa é aberto, isso atende bem à maioria dos projetos colaborativos. O problema é que muitas empresas possuem segredos a guardar, o que as impede de simplesmente abrir totalmente o código de seus programas.

A LGPL funciona melhor nestes casos, pois permite que você desenvolva programas "semi abertos" onde parte do código do programa está disponível e o restante das funções é proporcionada por alguns binários que não possuem seu código aberto, estes binários linkados no programa no momento da compilação, de uma forma análoga às DLL's do Windows.

Imagine que você tenha uma empresa que desenvolve um processador de textos no estilo do Word. Depois de algumas noites sem dormir você desenvolve um módulo revolucionário que é capaz de abrir e salvar qualquer tipo de arquivo do Office sem falhas. Isso sem dúvida é um grande diferencial para o seu produto e por isso você resolve não abrir o código fonte, afinal você desenvolveu o software sozinho e pode decidir o que fazer com ele.

A LGPL funcionaria bem no seu caso, pois você poderia abrir o código do seu editor de textos para que outras pessoas possam contribuir com melhorias e correções, mas manter proprietário o módulo que lê arquivos do Office, o grande diferencial que faria as pessoas comprarem o editor ao invés de simplesmente instalar a partir do código fonte.

Voltando ao nosso assunto, após efetuar o download da biblioteca Reports.dll , copie o arquivo para uma pasta definida. Pode ser a pasta c:\Windows\System32. (Junto com o download vem a documentação e exemplos em C#, VB.NET e ASP.NET)

Os exemplos a seguir foram adaptados dos exemplos que vem junto com o download da biblioteca.

Inicie um novo projeto no Visual Studio .NET 2003 (1.1) do tipo Windows Application usando a linguagem VB.NET dando ao mesmo o nome de geraPDF.

Agora vamos incluir uma referência a biblioteca Reports.dll; para isto clique com o botão direito do mouse sobre o nome do projeto(não da solução) e selecione a opção Add Reference. A seguir, estando na guia .NET, clique no botão Browse e selecione o arquivo Reports.dll que você baixou e copiou para sua máquina. A seguir clique em Select e em OK.

Voltando ao projeto podemos agora declarar a seguinte linha de imports para a referência a DLL :  Imports Root.Reports

No formulário principal inclua dois botões de comando conforme a figura abaixo:

Nota: Na janela Solution Explorer você pode ver as referências usadas no projeto.

Vamos agora executar duas tarefas básicas:

1- Gerar um arquivo PDF e visualizá-lo no VB.NET (Você vai precisar ter o ACROBAT instalado)

2- Gerar um arquivo PDF, visualizá-lo  e salvá-lo na pasta bin do projeto.

1 - Gerando e visualizando um arquivo PDF

No evento Click do primeiro botão de comando inclua o seguinte código:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


'cria um novo PDF

Dim report As Report = New Report(New PdfFormatter)


'define a fonte usada

Dim fd As FontDef = New FontDef(report, FontDef.StandardFont.TimesRoman)

Dim fp As FontProp = New FontPropMM(fd, 10)


'cria uma nova página

Dim page As Page = New Page(report)


'insere uma linha de texto

page.AddCB_MM(60, New RepString(fp, "Olá, Mundo PDF ! "))

page.AddCB_MM(120, New RepString(fp, "www.macoratti.net "))


'visualiza o PDF

RT.ViewPDF(report, "OlaMundo.pdf")

End Sub

Este código faz exatamente o que os comentários explicam. Geram uma arquivo PDF e o exibe.

2 - Gerando,  visualizando e salvando um arquivo PDF

No evento Click do primeiro botão de comando inclua o seguinte código:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


' Cria um arquivo PDF

Dim relatorioPDF As New Report(New PdfFormatter)


' Define informações da fonte usadas

Dim FontDef As New FontDef(relatorioPDF, "Courier")

Dim FontProp As New FontPropMM(FontDef, 8)


' Cria uma nova página

Dim PDFPage As New Page(relatorioPDF)


' Adiciona algumas linhas de texto

PDFPage.AddCB_MM(60, New RepString(FontProp, "Gerando PDF"))

PDFPage.AddCB_MM(80, New RepString(FontProp, "Visual Basic.NET"))

PDFPage.AddCB_MM(100, New RepString(FontProp, "www.macoratti.net"))


Try

   'visualiza o PDF

    RT.ViewPDF(relatorioPDF, "OlaMundo.pdf")


   
' Salvando o documento na pasta bin do projeto

    relatorioPDF.Save("arquivo.pdf")

    MsgBox("Arquivo PDF salvo com sucesso.", MsgBoxStyle.Information)

Catch ex As Exception

     MsgBox(ex.Message)

End Try

 

End Sub

Ao executar o projeto o resultado obtido pelo código do segundo botão é o seguinte:

Não vou entrar em mais detalhes pois você tem a documentação e exemplos disponíveis ao fazer o download da biblioteca. Apenas lembrando é free.(não quer dizer que é grátis)

Estou disponibilizando um link para você pegar apenas a biblioteca Reports.dll , mas eu sugiro que você faça o download do site original.

Pegue a biblioteca(Reports.dll) aqui : ReportsDLL.zip

Até o próximo artigo VB.NET ...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti