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