VB .NET - Criando documentos PDF (PDFSharp + Migradoc) - I


 Hoje eu volto ao assunto de como gerar documentos PDF usando a linguagem VB .NET. Neste artigo eu vou mostrar como usar a biblioteca PDFSharp para gerar PDFs.

O Portable Document Format - (PDF) é um formato de arquivo que representa todas as características de um documento impresso que você pode ler, escrever e imprimir.

Cada arquivo PDF incluiu uma descrição completa de um documento plano de layout fixo, incluindo o texto, fontes, gráficos e outras informações necessárias para visualizá-lo. Você pode criar arquivos PDF via código a partir de seus aplicativos VB.Net com muita facilidade usando bibliotecas de terceiros como o iTextSharp, PDFSharp, etc.

Nota: A biblioteca iTextSharp que é um porte da iText para a plataforma .NET é livre para uso não comercial mas requer uma licença para uso comercial. A PDFSharp é livre para qualquer uso e possui uma boa documentação.

As bibliotecas PDFsharp  e Migradoc são de código aberto que criam facilmente documentos PDF a partir de seus aplicativos VB .Net e que pode ser facilmente referenciadas no seu projeto via Nuget.

A principal diferença entre PDFSharp e Migradoc é o nível de controle disponível para o desenvolvedor como veremos a seguir.

Na PDFSharp você é responsável por controlar todos os aspectos do processo de renderização que é feito desenhando linhas, strings e formas nas coordenadas especificadas em um contexto PDF gráficos. Os autores da biblioteca imitaram a interface Microsoft GDI+ e, assim, muitos dos nomes de métodos e objetos serão familiares para os desenvolvedores com experiência no GDI+.

O único problema com PDFSharp é que ele requer do desenvolvedor um monte de trabalho. Para algumas aplicações, onde o nível de controle exigido do programador não seja muito complexo podemos usar PDFSharp, mas para outras ocasiões, a biblioteca MigraDoc é a mais indicada, visto que a biblioteca Migradoc fornece um modelo de domínio para a geração de documentos e permite que você construa um documento usando seções, parágrafos e tabelas, etc.

Esta biblioteca simplifica enormemente a geração de documentos, automatizando muitas das tarefas de renderização, com a limitação óbvia de controle exigida para renderização. Para documentos simples, isso pode não ser um problema, mas pode ser um problema se um documento mais complexo for necessário.

Dessa forma a utilização de uma ou outra biblioteca vai depender do que você precisa fazer em termos de geração de documentos PDF.

Se precisar apenas de um simples renderização PDF a biblioteca Migradoc vai te atender. Porém para situações mais complexas você tem disponível a biblioteca PDF Sharp, e, como ambas estão relacionadas você também pode renderizar um único documento usando uma combinação de ambas as bibliotecas.

No artigo de hoje vamos mostrar como gerar arquivos PDF usando as bibliotecas PDFSharp e Migradoc no Visual Studio Community 2013 usando a linguagem VB .NET.

 

Recursos usados :

Criando o projeto no VS Community 2013

Abra o VS Community 2013 e clique em New Project;

A seguir selecione Other Project Types -> VIsual Studio Solutions;

Informe o nome VBNET_Gerando_PDF e clique no botão OK;

Será criada uma solução vazia onde iremos incluir os nosso projetos de exemplo mostrando como gerar arquivos PDF.

Nosso primeiro projeto será um projeto Windows Forms onde iremos mostrar como gerar um arquivo PDF simples usando o PDFSharp.

Gerando um arquivo PDF simples com PDFSharp

No menu FILE clique em Add -> New Project;

Clique em Visual Basic -> Windows Forms Application e informe o nome 1_PDF_WF_Simples:

Vamos agora incluir  uma referência à biblioteca PDFSharp em nosso projeto via Nuget.

No menu TOOLS clique em Nuget Package Manager -> Manage Nuget Packages for Solution;

Informe na caixa de busca o nome PDFSharp e a seguir selecione a biblioteca na janela do assistente:

Selecione o item PDFSharp + MigraDoc e clique no botão Install para instalar a biblioteca na solução:

Se preferir usar a janela do Package Manager Console digite o seguinte comando : Install-Package PdfSharp -Version 1.32.3057

Nota: Você pode também baixar os arquivos no link : http://pdfsharp.codeplex.com/releases

Vamos agora definir a interface com o usuário incluindo no formulário form1.cs do projeto os seguintes controles a partir da ToolBox:

Disponha os controles no formulário conforme o leiaute da figura abaixo:

Para começar vamos definir os namespaces necessários no início do formulário form1.vb :

Imports PdfSharp

Imports PdfSharp.Drawing

Imports PdfSharp.Pdf

Imports System.IO

Agora no evento Click do botão de comando - Gerar PDF Simples - defina o código a seguir:

Private Sub btnGerarPDF_Click(sender As Object, e As EventArgs) Handles btnGerarPDF.Click
        Try
            'verifica se informou valores para as caixas de texto
            If Not String.IsNullOrEmpty(txtTexto.Text) And Not String.IsNullOrEmpty(txtDestino.Text) Then
                 'verifica se o arquivo ou pasta de destino existe
                If File.Exists(txtDestino.Text) Then
                    'Cria um documento PDF
                    Dim pdf As PdfDocument = New PdfDocument
             'definindo informações do autor e palavras chaves
                    pdf.Info.Author = "Macoratti"
                    pdf.Info.Keywords = "PdfSharp, Exemplos, VB .NET"
                    'informando a data de criação do documento
                    pdf.Info.CreationDate = DateTime.Now
                    ' informando o assunto
                    pdf.Info.Subject = "Gerando PDF com PDFSharp no VB .NET"
                    'cria uma página vazia
                    Dim pdfPage As PdfPage = pdf.AddPage
                    'Cria um objeto XGraphics
                    Dim graph As XGraphics = XGraphics.FromPdfPage(pdfPage)
                   ' Desenha linhas cruzadas
                    Dim pen As XPen = New XPen(XColor.FromArgb(255, 0, 0))
                    graph.DrawLine(pen, New XPoint(0, 0), New XPoint(pdfPage.Width.Point, pdfPage.Height.Point))
                    graph.DrawLine(pen, New XPoint(pdfPage.Width.Point, 0), New XPoint(0, pdfPage.Height.Point))
                    'Desenha uma elipse
                    graph.DrawEllipse(pen, 3 * pdfPage.Width.Point / 10, 3 * pdfPage.Height.Point / 10, 2 * pdfPage.Width.Point / 5, 2 * pdfPage.Height.Point / 5)
                    'Cria um objeto Font a partir de XFont
                    Dim font As XFont = New XFont("Verdana", 15, XFontStyle.Bold)
                    'Incluir um  conteúdo no seu documento PDF ( se usar  XStringFormats.Center irá centralizar o conteúdo na página PDF )
                    graph.DrawString(txtTexto.Text, font, XBrushes.Black, New XRect(0, 0, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft)
                    'Salva o documento PDF
                    pdf.Save(txtDestino.Text)
                    MessageBox.Show("Arquivo   [" + txtDestino.Text + "]   gerado com sucesso.", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    'abre o arquivo PDF e exibe 
                    Process.Start(txtDestino.Text)
                Else
                    MessageBox.Show("O arquivo/diretório de destino não existe...", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Else
                MessageBox.Show("Informe o arquivo de destino e/ou o texto do arquivo PDF...", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Catch ex As Exception
            'captura erros
            MessageBox.Show("Erro : " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

Neste exemplo estamos desenhando linhas, uma elipse e inserindo um texto no documento PDF. Note que a sintaxe é muito parecida com a utilização do GDI+.

Nota: Para mais exemplos veja o link: http://www.pdfsharp.net/wiki/PDFsharpSamples.ashx

O código já esta todo comentado então é só executar e obter o resultado :

Ao clicar no botão OK a linha de código - Process.Start(txtDestino.Text) - será executada e o arquivo PDF gerado exibido conforme abaixo:

Na  continuação do artigo eu vou mostrar a mostrar com criar arquivos PDF usando o Migradoc.

Pegue o projeto completo aqui:  VBNET_Gerando_PDF1.zip (sem as referências)

Porque muitos há, dos quais muitas vezes vos disse, e agora também digo, chorando, que são inimigos da cruz de Cristo,
Cujo fim é a perdição; cujo Deus é o ventre, e cuja glória é para confusão deles, que só pensam nas coisas terrenas.

Filipenses 3:18,19

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

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti