Поиск слова в PDF с помощью Java

Возможно, вам потребуется выполнить поиск определенного текста в документах Word или PDF. Как Java-разработчик, вы можете выполнять программный поиск любого текста в PDF-документах. В этой статье вы узнаете, как искать слово в документах PDF с помощью Java.

В этой статье обсуждаются/рассматриваются следующие темы:

Java API для поиска текста

Я буду использовать API GroupDocs.Search for Java для поиска в документах PDF. Он позволяет выполнять операции текстового поиска во всех популярных форматах документов, таких как PDF, Word, Excel, PowerPoint и многих других. С помощью этого API вы можете легко получать необходимую информацию из файлов, документов, электронных писем и архивов. Он также позволяет создавать и объединять несколько индексов. Вы можете использовать простые, логические, регулярные выражения (регулярные выражения), нечеткие и другие типы запросов для быстрого и эффективного поиска в индексах.

Скачать и настроить

Вы можете скачать JAR API или просто добавить следующую конфигурацию pom.xml в свои приложения Java на основе Maven, чтобы попробовать приведенные ниже примеры кода.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>20.11</version> 
</dependency>

Поиск текста в PDF с использованием Java

Вы можете легко искать любой текст или определенное слово в ваших документах PDF, выполнив простые шаги, указанные ниже:

  • Создайте Индекс
  • Укажите путь к папке индекса
  • Подпишитесь на индекс событий
  • Добавьте файлы в индекс, вызвав метод add.
  • Выполните поиск с помощью метода search.
  • Используйте SearchResult и распечатайте сводку
  • Выделите результаты поиска в выводе с помощью метода highlight.

В следующем примере кода показано, как искать слово в документе PDF с помощью Java.

String indexFolder = "C:\\Index\\"; // Specify the path to the index folder
String documentsFolder = "C:\\Files\\"; // Specify the path to a folder containing documents to search

// Создайте новый индекс или
// Открыть существующий индекс
Index index = new Index(indexFolder);

// Подпишитесь на события индекса
index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
    public void invoke(Object sender, IndexErrorEventArgs args) {
        System.out.println(args.getMessage()); // Writing error messages to the console
    }
});

// Добавляйте файлы синхронно
index.add(documentsFolder); // Synchronous indexing documents from the specified folder

// Выполнить поиск
String query = "elementum"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

// Используйте результаты поиска
// Печать результата
System.out.println("Documents found: " + result.getDocumentCount());
System.out.println("Total occurrences found: " + result.getOccurrenceCount());
for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
}

// Выделение вхождений в тексте
if (result.getDocumentCount() > 0) {
    FoundDocument document = result.getFoundDocument(0); // Getting the first found document
    String path = "C:\\Output\\Highlighted.html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); // Creating the output adapter to a file
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the HtmlHighlighter object
    index.highlight(document, highlighter); // Generating output HTML formatted document with highlighted search results

    System.out.println();
    System.out.println("Generated HTML file can be opened with Internet browser.");
    System.out.println("The file can be found by the following path:");
    System.out.println(Paths.get(path).toAbsolutePath().toString());
}

Приведенный выше пример кода должен генерировать следующий вывод:

Documents found: 1
Total occurrences found: 6
	Document: C:\Files\Lorem ipsum.pdf
	Occurrences: 6

Generated HTML file can be opened with Internet browser.
The file can be found by the following path:
C:\Output\Highlighted.html
Поиск слова в документе PDF с использованием Java

Поиск слова в документе PDF с использованием Java

Индекс и индексное событие

Класс Index — основной класс для индексации документов и поиска по ним. Индекс можно создать в памяти или на диске, вызвав конструктор этого класса. Я создал его на диске, чтобы его можно было использовать повторно.

Чтобы получать информацию об ошибках индексации, я подписался на событие ErrorOccurred. Он покажет ошибки, если они произошли во время индексации файлов.

Добавить файлы в индекс

Метод add класса Index добавляет файл или все файлы в папку или подпапки по абсолютному или относительному пути. Все документы по указанному пути будут проиндексированы.

Выполнить операцию поиска

Класс Index предоставляет различные методы search для выполнения операции поиска. Вы можете выполнять поиск по простому ключевому слову или определить SearchQuery.

Класс SearchResult предоставляет сведения о результатах поиска, соответствующих поисковому запросу. Некоторые методы описаны здесь:

  • Метод getOccurrenceCount() возвращает общее количество найденных вхождений.
  • Метод getDocumentCount() предоставляет количество документов, найденных в индексе.
  • Метод getFoundDocument(int) возвращает FoundDocument
  • Метод FoundDocument.getOccurrenceCount() возвращает количество вхождений, найденных в документе.

Выделите результаты поиска

Класс HtmlHighlighter облегчает выделение результатов поиска во всем тексте документа, отформатированном в HTML.

Метод highlight класса Index создает выходные данные HTML, выделяя вхождения найденных терминов. Вы можете найти более подробную информацию о «Подсветка результатов поиска» в документации.

Получить бесплатную лицензию

Вы можете попробовать API без ограничений на пробную версию, запросив бесплатную временную лицензию.

Вывод

В этой статье вы узнали, как искать слово в документе PDF с помощью Java. Вы можете узнать больше о GroupDocs.Search for Java API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

Смотрите также