C# - Convertendo PDF para Texto com iTextSharp


O iText é uma biblioteca de PDF que permite que você crie, adapte, inspecione e mantenha documentos no formato PDF - http://sourceforge.net/projects/itextsharp/.

Ela possui os seguintes recursos:

- Gera documentos e relatórios com base em dados de um arquivo XML ou um banco de dados
- Cria mapas e livros , explorando inúmeros recursos interativos disponíveis em PDF
- Adiciona marcadores, números de páginas , marcas d'água e outros recursos para documentos PDF existentes
- Separa ou concatena páginas de arquivos PDF existentes
- Preenche formulários interativos
- Serve documentos PDF gerados dinamicamente ou manipulados para um navegador web


A livraria iText é usada pelo Java, plataforma .NET, Android e desenvolvedores GAE para melhorar suas aplicações com funcionalidade PDF.

O iTextSharp é o porte para a plataforma .NET.

Vários engenheiros do iText estão apoiando ativamente o projeto no iText mailing-list itext-questions@lists.sourceforge.net  e  no StackOverflow:  http://stackoverflow.com/questions/tagged/itext

Neste artigo vamos usar o iTextSharp para converter um documento PDF para texto usando a linguagem C#.

A primeira coisa a fazer é realizar o download da biblioteca iTextSharp no site : http://sourceforge.net/projects/itextsharp/

Criando o projeto no Visual Studio

Abra o  Visual Studio 2012 for Windows Desktop e clique em New Project;

A seguir selecione o tempalte Visual C# -> Windows Forms Application e informe o nome Converte_PDF_Texto e clique em OK;

No menu PROJECT clique em Add Reference;

A seguir clique em Browse e localize a pasta onde você descompactou a biblioteca iTextSharp selecionando o arquivo itextsharp.dll;

A partir da ToolBox inclua os seguintes controles no formulário form1.cs:

Defina os controles conforme o leiaute da figura abaixo :

Agora vamos criar a classe ConvertePDF e o método ExtrairTexto_PDF() em nosso projeto;

Clique no menu PROJECT e a seguir em Add Class;

Selecione o template Class e informe o nome ConvertePDF;

A seguir defina o código abaixo na classe:

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.Text;
namespace Converte_PDF_Texto
{
    public class ConvertePDF
    {
        public string ExtrairTexto_PDF(string caminho)
        {
            using (PdfReader leitor = new PdfReader(caminho))
            {
                StringBuilder texto = new StringBuilder();
                for (int i = 1; i <= leitor.NumberOfPages; i++)
                {
                    texto.Append(PdfTextExtractor.GetTextFromPage(leitor, i));
                }
                return texto.ToString();
            }
        }
    }
}

No evento Click do botão de comando Procurar inclua o código abaixo que usa o componente OpenFIleDialog para abrir uma caixa de diálogo Abrir Arquivos:

 private void btnProcurar_Click(object sender, EventArgs e)
 {
            //define as propriedades do controle 
            //OpenFileDialog
            this.ofd1.Multiselect = false;
            this.ofd1.Title = "Selecionar PDF";
            ofd1.InitialDirectory = @"C:\dados";
            //filtra para exibir somente arquivos de imagens
            ofd1.Filter = "Files (*.PDF)|*.PDF|" + "All files (*.*)|*.*";
            ofd1.CheckFileExists = true;
            ofd1.CheckPathExists = true;
            ofd1.FilterIndex = 2;
            ofd1.RestoreDirectory = true;
            ofd1.ReadOnlyChecked = true;
            ofd1.ShowReadOnly = false;

            DialogResult dr = this.ofd1.ShowDialog();
            if (dr == System.Windows.Forms.DialogResult.OK)
            {
                txtCaminoNomePDF.Text = ofd1.FileName;
            }
 }

Agora no evento Click do botão de comando Converter para texto inclua o código abaixo:

  private void btnConvertePDF_Click(object sender, EventArgs e)
  {
            try
            {
                ConvertePDF pdftxt = new ConvertePDF();
                txtArquivoTexto.Text = pdftxt.ExtrairTexto_PDF(txtCaminoNomePDF.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
  }

O código acima é muito simples. Ele cria uma instância da classe ConvertePDF() e a seguir usa o método ExtrairTexto_PDF() passando o caminho e nome do arquivo selecionado para conversão.

Executando o projeto e selecionando um arquivo PDF vemos o resultado conforme figura a seguir:

Existem muitas outras maneiras de obtermos o mesmo resultado mas este código é muito simples e ideal para arquivos PDF pequenos.

Pegue o projeto completo aqui: Converte_PDF_Texto.zip

João 8:49 Jesus respondeu: Eu não tenho demônio; antes honro a meu Pai, e vós me desonrais.

João 8:50 Eu não busco a minha glória; há quem a busque, e julgue.

João 8:51 Em verdade, em verdade vos digo que, se alguém guardar a minha palavra, nunca verá a morte.

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti