2013-07-05 13 views
8

Dies ist mein erster Post in StackOverflow.Suche bestimmtes Wort in PDF mit Itextsharp

Ich habe eine PDF-Datei in meinem Systemlaufwerk ... Ich möchte ein Programm in C# schreiben mit Itextsharp.dll Verweis auf ein bestimmtes Wort in diesem PDF suchen ... sagen, ich will "StackOverFlow" suchen. .. Wenn das PDF das Word "StackOverFlow" enthält, sollte es True zurückgeben.

Sonst sollte es false zurückgeben.

Ich habe in vielen Artikeln gesucht, aber nicht die Lösung bis jetzt bekommen .. :-(

Was ich habe versucht, bis jetzt ist:

public string ReadPdfFile(string fileName) 
     { 
      StringBuilder text = new StringBuilder(); 

      if (File.Exists(fileName)) 
      { 
       PdfReader pdfReader = new PdfReader(fileName); 

       for (int page = 1; page <= pdfReader.NumberOfPages; page++) 
       { 
        ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 
        string currentText = "2154/MUM/2012 A";// PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); 

        currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); 
        text.Append(currentText); 
       } 
       pdfReader.Close(); 
      } 
      return text.ToString(); 
     } 

Vielen Dank im Voraus, Sabya Dev

+2

Sie haben 'PdfTextExtractor.GetTextFromPage (pdfReader, Seite, Strategie) .' Und Sie haben die gesuchte Zeichenfolge. Haben Sie überprüft, ob Ihr Suchstring noch im Ergebnis der 'GetTextFromPage'-Methode ist? Wenn dies nicht der Fall ist, haben Sie überprüft, wie die Rückgabe dieser Methode aussieht (es ist schließlich eine Zeichenkette)? – mkl

Antwort

15

die folgende Methode funktioniert gut. Es die Liste der Seiten, auf denen gibt der Text gefunden wird.

 public List<int> ReadPdfFile(string fileName, String searthText) 
      { 
       List<int> pages = new List<int>(); 
       if (File.Exists(fileName)) 
       { 
        PdfReader pdfReader = new PdfReader(fileName); 
        for (int page = 1; page <= pdfReader.NumberOfPages; page++) 
        { 
         ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 

         string currentPageText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); 
         if (currentPageText.Contains(searthText)) 
         { 
          pages.Add(page); 
         } 
        } 
        pdfReader.Close(); 
       } 
       return pages; 
      } 
+0

Danke für die Antwort ... Kann ich auch die Seitennummer bekommen ??? – user2553159

+0

Ja, Sie erhalten die Seitenzahlen in der Liste. Rückseiten; gibt die Seitennummern .. – Lalitya

+1

Ich denke, dass Ihr Text Parameter hat ein Lispeln. ;) –

Verwandte Themen