Ваша задача может быть разбита на следующие подзадачи:
- Разработка индексатор, который будет индексировать все ваши PDF файлы
- Develop код, чтобы найти соответствующую PDF всякий раз, когда поиск осуществляется (с использованием индекса, конечно)
- Разработки функциональных возможностей, которые будут открывать соответствующий 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);
}
какой-либо причине для downvote? в любом случае я могу улучшить свой ответ? – CloudyMarble