【问题标题】:Programmatically search for text in a PDF file and tell the page number? [closed]以编程方式搜索 PDF 文件中的文本并告知页码? [关闭]
【发布时间】:2010-10-17 02:43:18
【问题描述】:

有一些工具允许提取 PDF 文件的整个文本部分,以便对 PDF 进行全文索引。

我需要一种搜索​​某些字符串的方法,如果在 PDF 文件中找到它们,返回页码?

【问题讨论】:

    标签: .net pdf text-search


    【解决方案1】:

    本例使用Adobe Reader自带的库,来自http://www.dotnetspider.com/resources/5040-Get-PDF-Page-Number.aspx

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

    【讨论】:

    • 感谢代码!不过,此示例需要安装 Adob​​e Professional。出于许可版税的原因,我希望有一个组件来执行此操作。
    【解决方案2】:

    您可以使用Docotic.Pdf library 在 PDF 文件中搜索文本。

    以下示例显示了如何在 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 工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-08
      • 2010-09-14
      • 2011-03-07
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 1970-01-01
      相关资源
      最近更新 更多