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


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

Continuando o artigo anterior vou mostrar como gerar um arquivo PDF usando agora a biblioteca Migradoc para você poder comparar as duas bibliotecas e verificar os prós e contras de cada uma.

Ao contrário do PDFSharp, a Migradoc usa um objeto Document para o qual os elementos do documento (por exemplo, parágrafos) são adicionados.

Nota: A biblioteca iTextSharp que é um porte de 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.

O documento é processado usando um PdfDocumentRenderer. No entanto, as complicações surgem quando se tenta fazer qualquer coisa fora do comum.  Por exemplo, as linhas não podem ser desenhadas usando MigraDoc, por isso a única maneira de voltar a produzir as linhas do exemplo do artigo anterior é a utilização de uma tabela contendo uma única coluna e habilitar/desabilitar diferentes limites de células.

Da mesma forma, não há nenhuma maneira de posicionar a tabela em um local específico (ou seja, metade da página) e, assim, só se pode conseguir isto através da aplicação de uma margem grande para a seção.

No entanto, Migradoc realiza o ajuste do texto para nós, o que é claramente benéfico quando existe o processamento de grandes quantidades de texto.

 

Recursos usados :

Gerando um arquivo PDF usando a biblioteca Migradoc

Abra a solução VBNET_Gerando_PDF criado no artigo anterior.

Inclua um novo controle Button a partir da ToolBox no formulário com o nome btnGerarPDFMigradoc

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

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

 Private Sub btnGerarPDFMigradoc_Click(sender As Object, e As EventArgs) Handles btnGerarPDFMigradoc.Click
        Try
            Dim pdf As Document = New Document
            'definindo informações do autor e palavras chaves
            pdf.Info.Author = "Macoratti"
            pdf.Info.Keywords = "PdfSharp, Exemplos, VB .NET"
            ' informando o assunto
            pdf.Info.Subject = "Gerando PDF com PDFSharp no VB .NET"
            ' Define o tamanho da pagina
            Dim width, height As Unit
            PageSetup.GetPageSize(PageFormat.A4, width, height)
            ' Adiciona uma seção ao documenteo e configura para que 
            ' ele esteja no centro na pagina
            Dim section As Section = pdf.AddSection
            'define a formatação da seção
            section.PageSetup.PageHeight = height
            section.PageSetup.PageWidth = width
            section.PageSetup.LeftMargin = 0
            section.PageSetup.RightMargin = 0
            ' Cria uma tabela de forma que possamos desenhar linhas horizontais
            Dim table As Table = New Table
            table.Borders.Width = 1  ' Valor padrão para exibir bordas 
            Dim column As Column = New Column
            column = table.AddColumn(width)
            column.Format.Alignment = ParagraphAlignment.Center
            'define a fonte a altura da fonte
            Dim fontHeight As Double = 36
            Dim font As Font = New Font("Times New Roman", fontHeight)
            ' Adiciona uma linha com uma unica celula para a primeira linha
            Dim row As Row = table.AddRow()
            Dim cell As Cell = row.Cells(0)
            'define o formato e as bordas
            cell.Format.Font.Color = Colors.Black
            cell.Format.Font.ApplyFont(font)
            cell.Borders.Left.Visible = False
            cell.Borders.Right.Visible = False
            cell.Borders.Bottom.Visible = False
            cell.AddParagraph("http://www.macoratti.net")
            ' Adiciona uma linha com uma unica celula para a segunda linha
            row = table.AddRow()
            cell = row.Cells(0)
            'define o formato e as bordas
            cell.Format.Font.Color = Colors.Black
            cell.Format.Alignment = ParagraphAlignment.Left
            cell.Format.Font.ApplyFont(font)
            cell.Borders.Left.Visible = False
            cell.Borders.Right.Visible = False
            cell.Borders.Top.Visible = False
            'adiciona o paragráfo ao documento
            cell.AddParagraph(txtTexto.Text)
            'adiciona na tabela
            pdf.LastSection.Add(table)
            ' Cria um renderizador
            Dim pdfRenderer As PdfDocumentRenderer = New PdfDocumentRenderer
            'Associa o documento MigraDoc com o renderizador
            pdfRenderer.Document = pdf
            'Renderiza o documento PDF
            pdfRenderer.RenderDocument()
            'Salva e exibe o documento PDF
            pdfRenderer.PdfDocument.Save(txtDestino.Text)
            Process.Start(txtDestino.Text)
        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 horizontais e inserindo textos no documento PDF. (O código esta sem o tratamento de erros usado na versão do PDFSharp)

Note que a sintaxe é bem diferente da usada com o PDFSharp.

O código já esta todo comentado então é só executar e 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 a partir de arquivos textos.

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

E Jesus, chamando um menino, o pôs no meio deles,
E disse: Em verdade vos digo que, se não vos converterdes e não vos fizerdes como meninos, de modo algum entrareis no reino dos céus.
Mateus 18:2,3

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