2013-07-05 15 views
8

To jest mój pierwszy wpis w StackOverflow.Wyszukaj konkretne słowo w formacie PDF za pomocą Itextsharp

Mam plik PDF na moim dysku systemowym ... Chcę napisać program w języku C# przy użyciu odwołania do pliku itextsharp.dll w celu wyszukania konkretnego słowa w tym pliku PDF ... powiedz, że chcę wyszukać "StackOverFlow". .. Jeśli plik PDF zawiera słowo "StackOverFlow", powinien zwrócić wartość true.

W przeciwnym razie powinien zwrócić wartość false.

Mam spojrzał na wiele artykułów, ale nie mieli do tej pory rozwiązanie .. :-(

Co próbowałem do tej pory to:

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(); 
     } 

góry dzięki, Sabya Dev

+2

Masz 'PdfTextExtractor.GetTextFromPage (pdfReader, page, strategy).' I masz szukany ciąg. Czy sprawdziłeś, czy Twój ciąg wyszukiwania jest już wynikiem metody "GetTextFromPage"? Jeśli tak nie jest, czy sprawdziłeś, jak wygląda powrót tej metody (w końcu jest to ciąg)? – mkl

Odpowiedz

15

Poniższa metoda działa dobrze. daje listę stron, w którym znajduje się tekst.

 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

Dzięki za odpowiedź ... Czy mogę uzyskać również numer strony ??? – user2553159

+0

Tak, masz numery stron na liście. strony powrotu; podaje numery stron .. – Lalitya

+1

Myślę, że twój parametr tekstowy ma seplenienie. ;) –

Powiązane problemy