Freeteo


Pensieri e C#dice di Matteo Raumer

Ricercare del testo dentro ad un file PDF

Qualche volta potrebbe capitare, come oggi è capitato a me, di dover cercare del testo contenuto dentro ad un file PDF tramite codice .net.

Innanzitutto mi sono affidato alla sempre ottima libreria ITextSharp con la quale mi sento sempre a mio agio, ma purtroppo questa volta non ho trovato niente di "già pronto" per questa esigenza.
 
Allora ho cominciato da "buon developer" a cercare su internet qualche specifica del file pdf da Adobe  e se qualche altro avesse già fatto qualcosa del genere.
Alla fine ne sono uscito con questo codice che sembra funzionare discretamente per quasi tutti i documenti su cui dovevo cercare:

StringBuilder sb = new StringBuilder();
PdfReader reader = new PdfReader("...path del file pdf...");

for (int i = 1; i <= reader.NumberOfPages; i++)
{
    byte[] bytes = reader.GetPageContent(i);
    bool inserire = false;
    char c;

    foreach (byte item in bytes)
    {
        c = (
char)item;

       
if (c == '('
        {
            inserire =
true;
           
continue;           //--- sta cominciando una parola salto la tonda
        }

        if (c == ')'
            inserire =
false//--- finita la parola

        if(inserire) 
            sb.Append(c);
    }
}
 
sb.ToString();   //--- ho tutto il testo del pdf in questa stringa
 
Come da specifiche ( capitolo 4:Text delle specifiche di adobe ) il testo viene racchiuso dentro alle parentesi tonde, e ITextSharp mi permette di analizzare direttamente il contenuto della singola pagina (metodo "GetPageContent()" ) , carattere per carattere, senza preoccuparmi di codifiche o altri byte che compongono file pdf.

Chiaramente arrivato ad avere il testo in memoria su una stringa l'obiettivo è raggiunto,ossia posso usare le Regex per fare qualsiasi tipo di ricerca...
Categoria: Tips
lunedì, 08 dic 2008 Ore. 22.53

Messaggi collegati






  • Views Home Page: 248.544
  • Views Posts: 427.102
  • Views Gallerie: 597.117
  • n° Posts: 163
  • n° Commenti: 148
Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003