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 :
Visual Studio Community 2013 (A versão 2015 já esta disponível na versão RC)
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
1 label - Salvar PDF em
1 TextBox - txtDestino
1 TextBox - txtTexto, Multiline = True
1 Button - btnGerarPDF
1 Button - 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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - Um leitor de arquivos no formato PDF - Macoratti ...
http://pdfsharp.com/PDFsharp/index.php?option=com_content&task=view&id=24&Itemid=35