在asp.net中搜索PDF内容c#

时间:2013-11-07 06:51:13

标签: asp.net pdf

其实我的要求是使用pdf内容搜索pdf文件。

我有一个包含大量PDF文件的文件夹。 我想开发一个ASP.net应用程序,使用户能够 使用文本框中提供的内容搜索pdf。

如何执行此任务? 提前谢谢你。

3 个答案:

答案 0 :(得分:1)

您的任务可能会分为以下子任务:

  1. 开发将索引所有PDF文件的索引器
  2. 开发代码,以便在执行搜索时找到相关的PDF(当然使用索引)
  3. 开发将打开相关PDF的功能或在未找到任何内容时显示警告
  4. 要构建索引,您可以使用Apache Lucene或Lucene.Net之类的集成解决方案,或者将每个PDF转换为文本并根据文本构建索引。

    您可以尝试Docotic.Pdf library作为索引器部分(免责声明:我为Bit Miracle工作)。

    该库可用于extract text (with or without formatting)。提取的文本可用于创建索引。

    图书馆还可以从PDF中检索words with their bounding rectangles的集合。如果您需要知道文件中文本的确切位置,这可能很有用。

    如果您不想构建索引,那么您仍然可以使用Docotic.Pdf使用如下代码执行搜索:

    PdfDocument doc = new PdfDocument("file.pdf");
    string textToSearch = "some text";
    for (int i = 0; i < doc.Pages.Count; i++)
    {
        string pageText = doc.Pages[i].GetText();
        int count = 0;
        int lastStartIndex = pageText.IndexOf(textToSearch, 0, StringComparison.CurrentCultureIgnoreCase);
        while (lastStartIndex != -1)
        {
            count++;
            lastStartIndex = pageText.IndexOf(textToSearch, lastStartIndex + 1, StringComparison.CurrentCultureIgnoreCase);
        }
    
        if (count != 0)
            Console.WriteLine("Page {0}: '{1}' found {2} times", i, textToSearch, count);
    }
    

答案 1 :(得分:0)

您可以使用任何库,尝试iTextSharp免费的。

您可以像this这样的文字阅读pdf:

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

答案 2 :(得分:0)

尝试Zoom Search它有一个用于提取pdf文档文本的插件(您可以搜索它),并且它很容易自定义您的搜索。您将需要非免费的标准版(约49美元).Zoom搜索是开箱即用的搜索,你不需要做任何复杂的事情,例如,如果你喜欢从pdf中提取文本,然后一些如何在数据库中索引搜索或尝试使用Lucene搜索引擎将要求你做工具/和定制(一点工作)。 Zoom适用于ASP.NET,您只需使用GUI来自定义搜索(不需要大量编码)。