sábado, 6 de abril de 2019

Linguagem C# - Trabalhando com a biblioteca iTextSharp


Caro amigo leitor, 

No artigo deste mês iremos abordar um tema muito utilizado em diversos momentos, o uso de arquivos no formato “PDF” em sistemas .Net. Para fins de curiosidade, este tipo de arquivo foi desenvolvido pela “Adobe Systems” em 1993, para representar documentos de maneira independente do aplicativo, do hardware e do sistema operacional usados para criá-los. (Fonte: https://pt.wikipedia.org)
Utilizaremos o “Microsoft Visual Studio Community 2017” junto com o gerenciador de pacotes “NuGet”, tendo como base o uso da linguagem C# através de Formulários Windows. (Ressalto que poderíamos desenvolver com base em Formulários Web também)
De acordo com sua documentação, a biblioteca “iTextSharp” permite também criar, adaptar, adicionar funcionalidades em formato PDF com muita facilidade, se tornando uma solução completa e bem documentada. Não podemos esquecer que a mesma é gratuita. Abaixo algumas características:
·         Geração de documentos e relatórios com base em dados de um arquivo XML ou de um Banco de Dados;
·         Possibilidade para adicionar marcadores (bookmarks), números de página, marcas d'água e outros recursos aos documentos PDF existentes;
·         Dividir ou concatenar páginas a partir de arquivos PDF existentes;
·         Preenchimento de formulários interativos;
Como esta biblioteca não é específica da arquitetura .NET, possuímos também versões para Android e Java.

Criando um novo projeto

Inicie um novo projeto clicando em “Arquivo/Novo/Projeto” escolhendo a opção “Aplicativo do Windows Forms”. O nosso formulário terá apenas um botão para chamar o arquivo (PDF) criado dinamicamente pela biblioteca. Para isto adicione no “Form” um componente “Button”. Ver Imagem 01.

Figura 01: Criando o formulário de exemplo.

Instalando a biblioteca “iTextSharp”

Como já vimos em diversos outros artigos, a instalação da biblioteca “iTextSharp” será com base no gerenciador de pacotes “NuGet”. Contamos com esta facilidade para implementar recursos interessantes em nossos projetos. Poderemos realizar esta tarefa através de linhas de comando ou pela interface gráfica. Optaremos pela segunda opção clicando em “Ferramentas/Gerenciador de Pacotes do NuGet/Gerenciador de Pacotes do NuGet para a solução...”. Na caixa de diálogo procure por “iTextSharp” e logo na primeira linha encontraremos nosso componente, conforme demonstra a Imagem 02.

Figura 02: Instalando o iTextSharp.

Ao clicar no botão “instalar” o mesmo será adicionado no projeto corrente. No Gerenciador de Soluções podemos conferir a referência “itextsharp”. Ver Imagem 03.

Figura 03: Referência.


Codificando o Exemplo

Precisaremos importar alguns “Namespaces” para o bom funcionamento.

using System;
using System.Windows.Forms;
using System.IO
using iTextSharp.text;
using iTextSharp.text.pdf;

A biblioteca “System.IO” se encarregará de trabalhar com a entrada e saída de arquivos, a “iTextSharp.Text” implementará a classe “Document”, “Paragraph”, entre outros métodos. Já a “iTextSharp.text.pdf” classes pertinentes para instanciar diretamente o arquivo PDF, tais como a “PdfWriter”.

Toda a codificação será no evento “Click” do “Button”. Ver Listagem 01.


private void btnPdf_Click(object sender, EventArgs e)
{
     Document doc = new Document(PageSize.A4);
string caminho = Application.StartupPath + @"\Exemplo.pdf";
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(caminho, FileMode.Create));
           

    try
    {
    
        doc.SetMargins(30, 30, 70, 70);
         doc.AddCreationDate();
         doc.Open();
    Paragraph par = new Paragraph();
    par.Alignment = Element.ALIGN_JUSTIFIED;
par.Add("Teste na criação de um arquivo PDF");
doc.Add(par);
         doc.Close();
         System.Diagnostics.Process.Start(caminho);
    }
    catch (Exception Ex)
    {
MessageBox.Show("Ocorreu um erro ao gerar o PDF - Erro:", Ex.Message);
    }
}
Listagem 01.

O primeiro passo seria de criar uma variável do tipo “Document”, o qual irá estipular o tipo de folha, como por exemplo A4. Já a outra variável “caminho” informaremos o local onde o arquivo será criado. O objeto “PdfWriter” encapsulará o “FileStream” gerado, com base em dois parâmetros, sendo o caminho e o tipo de criação.
Após preenchermos todos estes pré-requisitos dentro do bloco “Try/Catch” trataremos por completo o código. No objeto “Document” iremos atribuir as margens do papel com a propriedade “SetMargins” e com o método “AddCreationDate()” informaremos a Data/Hora corrente. O método “Open()” iniciará o documento. Para trabalhar com parágrafos usaremos o objeto “Paragraph” informando as propriedades “Alignment” e “Add”. Adicionaremos no documento através do método “doc.Add”. Para gravar todas estas alterações devermos invocar o método “Close()”. O código “System.Diagnostics.Process.Start” abrirá o PDF após sua criação ou alteração. Ver imagem 04.

Figura 04: Gerando e abrindo o PDF.

Poderíamos também implementar mais algumas outras funcionalidades no exemplo acima, como por exemplo um outro parágrafo contendo um alinhamento central, com uma fonte do tipo Negrito com tamanho 18.

Exemplo:

Font Fonte = new Font();
Fonte.Size = 18;
Fonte.SetStyle(1); //Negrito
Paragraph paragrafo = new Paragraph("", Fonte);
paragrafo.Alignment = Element.ALIGN_CENTER;
paragrafo.Font = Fonte;
paragrafo.Add("Exemplo formatando tamanho e estilo da Fonte");
doc.Add(paragrafo);

Podemos conferir o arquivo PDF na Figura 05.

Figura 05: Exemplo de formatação.

Conclusões
A ideia deste artigo foi de demonstrar a facilidade para adquirir, instalar e utilizar a biblioteca “iTextSharp”, nos permitindo implementar facilmente o uso de arquivos PDF. Com pouca codificação, foi desenvolvido um exemplo básico para demonstrar algumas das principais funcionalidades desta fabulosa ferramenta.
Um abraço e até o mês que vem!

Referências

Nenhum comentário:

Postar um comentário