2013-11-07 3 views
1

На самом деле, мое требование - искать pdf-файлы, используя pdf-контент.Поиск в PDF-формате в asp.net C#

У меня есть папка с большим количеством PDF-файлов. Я хотел бы разработать приложение ASP.net, которое позволяет пользователю искать pdf, используя содержимое, предоставленное ими в текстовом поле.

как выполнить эту задачу? благодарю вас заранее.

ответ

0

Вы можете использовать любую библиотеку для этого, попробуйте iTextSharp его бесплатный.

Вы можете прочитать PDF как текст, как this:

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

какой-либо причине для downvote? в любом случае я могу улучшить свой ответ? – CloudyMarble

0

попробовать Zoom Search имеет плагин для извлечения документов в формате PDF текст (который вы можете искать против), и его легко настроить search.You потребуется стандартная версия, которая не является бесплатной (около $ 49). Поиск в Zoom ищет вас из коробки, вам не нужно делать какие-либо сложные вещи, например, если вы предпочитаете извлекать текст из pdf-файла, а затем как-то индексировать его в базе данных для поиска или попытки использовать поисковую систему Lucene, которая потребует от вас выполнения и/или настройки (немного работы). Zoom работает хорошо с ASP.NET, и вам просто нужно использовать графический интерфейс для настройки вашего поиска (не требуется много кодирования).

1

Ваша задача может быть разбита на следующие подзадачи:

  1. Разработка индексатор, который будет индексировать все ваши PDF файлы
  2. Develop код, чтобы найти соответствующую PDF всякий раз, когда поиск осуществляется (с использованием индекса, конечно)
  3. Разработки функциональных возможностей, которые будут открывать соответствующий PDF или показать предупреждение, если ничего не было найдено

Для построения индекса вы можете использовать некоторые интегрированные решения, как Apache Lucene или Lucene.Net или конвертировать каждый PDF в текст и строить индекс из текста самостоятельно.

Вы можете попробовать Docotic.Pdf library для части индексатора (отказ от ответственности: я работаю для бит чуда).

Библиотеку можно использовать для extract text (with or without formatting). Выделенный текст можно использовать для создания индекса.

Библиотека также может извлекать коллекцию words with their bounding rectangles из 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); 
} 
Смежные вопросы