C# - Convertendo imagens JPG para PDF


 Neste artigo eu vou apresentar uma aplicação Windows Forms feita na linguagem C# que converte imagens JPG para PDF.

A aplicação utiliza os recursos do iTextSharp para realizar a conversão.

O iText é uma biblioteca de PDF que permite que você crie, adapte, inspecione e mantenha documentos no formato PDF - Portable Document Format.

Alguns recursos oferecidos pelo IText:

- Gerar documentos e relatórios com base em dados de um arquivo XML ou um banco de dados;
- Criar mapas e livros, explorando inúmeros recursos interativos disponíveis em PDF;
- Adicione marcadores, números de página, marcas d'água e outros recursos para documentos PDF existentes
- Dividir ou concatenar páginas de arquivos PDF existentes;
- Preencher formulários interativos;
- Servir documentos PDF dinamicamente gerados ou manipulados para um navegador web;

O iText é usado pelo Java, .NET, Android e GAE desenvolvedores para melhorar as suas aplicações com funcionalidade PDF.

O iTextSharp é a porte para plataforma.NET do Itext.

A nossa aplicação exemplo mostra como usar o ITextSharp e funciona assim:

Selecione uma pasta onde estão as imagens que deseja converter e a pasta de saída do arquivo PDF que irá conter as imagens PDF.

Abaixo vemos o formulário da aplicação com a barra de progresso indicando o progresso da operação:

O método que faz todo o trabalho é o método ImagensParaPDF() mostrado a seguir:

 public void ImagensParaPDF(string ImagemCaminhoOrigem, string caminhoSaidaPDF)
        {
            string[] caminhoImagens = GetImageFiles(ImagemCaminhoOrigem);

            if (caminhoImagens.Length > 0)
            {
                this.progressBar1.Minimum = 1;
                this.progressBar1.Maximum = caminhoImagens.Length;
                string pdfpath = caminhoSaidaPDF + ImagemCaminhoOrigem.Substring(ImagemCaminhoOrigem.LastIndexOf("\\")) + ".pdf";

                if (File.Exists(pdfpath))
                {
                    pdfpath = SetNewName(caminhoSaidaPDF, ImagemCaminhoOrigem.Substring(ImagemCaminhoOrigem.LastIndexOf("\\") + 1));
                }

                using (var doc = new iTextSharp.text.Document())
                {
                    iTextSharp.text.pdf.PdfWriter.GetInstance(doc, new FileStream(pdfpath, FileMode.Create));
                    doc.Open();

                    foreach (var item in caminhoImagens)
                    {
                        iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(item);

                        //image.SetAbsolutePosition(30f, 30f);
                        if (this.chkScalebyImageSize.Checked)
                        {
                            image.ScaleToFit(doc.PageSize.Width - 60, doc.PageSize.Height - 60);
                        }
                        else
                        {
                            image.ScaleAbsoluteHeight(doc.PageSize.Height - 60);
                            image.ScaleAbsoluteWidth(doc.PageSize.Width - 60);
                        }
                        doc.Add(image);

                        if (this.progressBar1.Maximum <= caminhoImagens.Length)
                            this.progressBar1.Increment(1);
                    }
                }
            }
            else
            {
                MessageBox.Show("Imagem não encontrada.", "Pare!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

Simples e funcional. Você pode incrementar o projeto com outras funcionalidades.

Pegue o projeto completo aqui: JPG_PDF.zip

Disse-lhes, pois, Jesus: Quando levantardes o Filho do homem, então conhecereis que EU SOU, e que nada faço por mim mesmo; mas isto falo como meu Pai me ensinou.
E aquele que me enviou está comigo. O Pai não me tem deixado só, porque eu faço sempre o que lhe agrada.

João 8:28-29
 

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