1

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

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

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

4

3 回答 3

1

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

  1. 开发索引器,将索引您的所有 PDF 文件
  2. 开发代码以在执行搜索时定位相关 PDF(当然使用索引)
  3. 开发将打开相关 PDF 或在未找到任何内容时显示警告的功能

要构建索引,您可以使用一些集成的解决方案,如 Apache Lucene 或Lucene.Net,或者将每个 PDF 转换为文本并自己从文本构建索引。

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

该库可用于从 PDF 中提取文本。它可以提取带或不带格式的文本。提取的文本可用于创建索引。

该库还可以从 PDF中检索带有边界矩形的单词集合。如果您需要知道文件中文本的确切位置,这可能很有用。

如果您不想建立索引,那么您仍然可以使用 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);
}
于 2013-11-07T10:13:08.770 回答
0

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

您可以像这样阅读 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();
}
于 2013-11-07T06:59:14.063 回答
0

试试Zoom Search它有一个用于提取 pdf 文档文本的插件(您可以对其进行搜索),并且可以轻松自定义您的搜索。您将需要标准版,它不是免费的(约 49 美元)。Zoom 搜索会为您进行搜索开箱即用,您不需要做任何复杂的事情,例如,如果您更喜欢从 pdf 中提取文本,然后在数据库中对其进行索引以进行搜索或尝试使用需要您执行的 Lucene 搜索引擎/和定制(一些工作)。Zoom 与 A​​SP.NET 配合得很好,您只需要使用 GUI 来自定义您的搜索(不需要大量编码)。

于 2013-11-07T07:02:24.730 回答