2013-07-05 50 views
8

Đây là bài đăng đầu tiên của tôi trong StackOverflow.Tìm kiếm từ cụ thể bằng PDF bằng Itextsharp

Tôi có tệp PDF trong Ổ đĩa hệ thống của mình ... Tôi muốn viết chương trình bằng C# bằng cách sử dụng tham chiếu Itextsharp.dll để tìm kiếm từ cụ thể trong tệp PDF đó ... nói rằng tôi muốn tìm kiếm "StackOverFlow". .. Nếu tệp PDF chứa từ "StackOverFlow", nó sẽ trả về true.

Khác nó sẽ trả về false.

tôi đã nhìn vào nhiều bài viết nhưng đã không nhận được giải pháp cho đến bây giờ .. :-(

Những gì tôi đã cố gắng cho đến bây giờ là:

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

Cảm ơn trước, Sabya Dev

+2

Bạn có 'PdfTextExtractor.GetTextFromPage (pdfReader, trang, chiến lược) .' Và bạn có chuỗi bạn tìm kiếm. Bạn đã kiểm tra xem chuỗi tìm kiếm của bạn có nằm trong kết quả của phương thức 'GetTextFromPage' chưa? Nếu nó không phải là, bạn đã kiểm tra những gì sự trở lại của phương pháp đó trông giống như (nó là một chuỗi sau khi tất cả)? – mkl

Trả lời

15

phương pháp sau đây hoạt động tốt. Nó cung cấp danh sách các trang trong đó văn bản được tìm thấy.

 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

Cảm ơn bạn đã trả lời ... Tôi có thể nhận được Số trang không? – user2553159

+0

có bạn nhận được số trang trong danh sách. trang trả về; cung cấp cho các số trang .. – Lalitya

+1

Tôi nghĩ rằng tham số văn bản của bạn có một lisp. ;) –

Các vấn đề liên quan