2009-04-02 13 views

答えて

2

この例では、Adobe Readerで付属のライブラリを使用しており、http://www.dotnetspider.com/resources/5040-Get-PDF-Page-Number.aspxから来ている:あなたは、PDFファイル内のテキストを検索するためにDocotic.Pdf libraryを使用することができます

using Acrobat; 
using AFORMAUTLib;       
private void pdfRandD(string fPath) 
{ 
    AcroPDDocClass objPages = new AcroPDDocClass(); 
    objPages.Open(fPath); 
    long TotalPDFPages = objPages.GetNumPages();    
    objPages.Close(); 
    AcroAVDocClass avDoc = new AcroAVDocClass(); 
    avDoc.Open(fPath, "Title"); 
    IAFormApp formApp = new AFormAppClass(); 
    IFields myFields = (IFields)formApp.Fields;    
    string searchWord = "Search String"; 
    string k = ""; 
    StreamWriter sw = new 
     StreamWriter(@"D:\KCG_FileChecker_Inputs\MAC\pdf\0230_525490_23_cha17.txt", false); 
    for (int p = 0; p < TotalPDFPages; p++) 
    {     
     int numWords = int.Parse(myFields.ExecuteThisJavascript("event.value=this.getPageNumWords(" + p + ");")); 
     k = ""; 
     for (int i = 0; i < numWords; i++) 
     { 
      string chkWord = myFields.ExecuteThisJavascript("event.value=this.getPageNthWord(" + p + "," + i + ", true);"); 
      k = k + " " + chkWord; 
     }     
     if(k.Trim().Contains(searchWord)) 
     { 
      int pNum = int.Parse(myFields.ExecuteThisJavascript("event.value=this.getPageLabel(" + p + ",true);")); 
      sw.WriteLine("The Word " + searchWord + " is exists in " + pNum);      
     } 

    } 
    sw.Close(); 
    MessageBox.Show("Process completed"); 
} 
+1

ありがとうコードです!このサンプルでは、​​Adobe Professionalのインストールが必要です。ライセンスロイヤルティの理由から、私はむしろこれを行うためのコンポーネントを持っているのが好きです。 – splattne

2

。サンプル後

は、PDFファイルとそれに対応するページ番号で指定された文字列を検索する方法を示しています。

static void searchForTextStrings() 
{ 
    string path = ""; 
    string[] stringsToFind = new string[] { }; 

    using (PdfDocument pdf = new PdfDocument(path)) 
    { 
     for (int i = 0; i < pdf.Pages.Count; i++) 
     { 
      string pageText = pdf.Pages[i].GetText(); 
      foreach (string s in stringsToFind) 
      { 
       int index = pageText.IndexOf(s, 0, StringComparison.CurrentCultureIgnoreCase); 
       if (index != -1) 
        Console.WriteLine("'{0}' found on page {1}", s, i); 
      } 
     } 
    } 
} 

あなたはIndexOfメソッドの第三引数を削除する場合は、大文字と小文字を区別した検索を行うことができます。

免責事項:私はBit Miracle、ライブラリのベンダーのために働いています。

関連する問題