Wyszukaj słowo w pliku PDF przy użyciu języka Java

Może być konieczne wyszukanie określonego tekstu w dokumentach programu Word lub PDF. Jako programista Java możesz programowo wyszukiwać dowolny tekst w dokumentach PDF. W tym artykule dowiesz się, jak wyszukiwać słowa w dokumentach PDF za pomocą języka Java.

W tym artykule omówiono/omówiono następujące tematy:

API Java do wyszukiwania tekstu

Do wyszukiwania w dokumentach PDF będę używać interfejsu API GroupDocs.Search for Java. Umożliwia wykonywanie operacji wyszukiwania tekstu we wszystkich popularnych formatach dokumentów, takich jak PDF, Word, Excel, PowerPoint i wiele innych. Za pomocą tego interfejsu API możesz łatwo pobrać wymagane informacje z plików, dokumentów, wiadomości e-mail i archiwów. Umożliwia także tworzenie i łączenie wielu indeksów. Możesz używać zapytań prostych, logicznych, wyrażeń regularnych (Regex), rozmytych i innych typów zapytań, aby szybko i inteligentnie przeszukiwać indeksy.

Pobierz i skonfiguruj

Możesz pobrać plik JAR interfejsu API lub po prostu dodać następującą konfigurację pom.xml do aplikacji Java opartych na Maven, aby wypróbować poniższe przykłady kodu.

<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>

Wyszukaj tekst w formacie PDF przy użyciu języka Java

Możesz łatwo wyszukiwać dowolny tekst lub określone słowo w dokumentach PDF, wykonując proste czynności wymienione poniżej:

  • Utwórz Indeks
  • Określ ścieżkę do folderu indeksu
  • Subskrybuj indeks wydarzeń
  • Dodaj pliki do indeksu wywołując metodę add.
  • Przeprowadź wyszukiwanie za pomocą metody szukaj.
  • Użyj SearchResult i wydrukuj podsumowanie
  • Podświetl wyszukiwane wyniki w wynikach za pomocą metody highlight.

Poniższy przykładowy kod pokazuje, jak wyszukiwać słowo w dokumencie PDF przy użyciu języka 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

// Utwórz nowy indeks lub
// Otwórz istniejący indeks
Index index = new Index(indexFolder);

// Subskrybuj wydarzenia indeksowane
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
    }
});

// Dodawaj pliki synchronicznie
index.add(documentsFolder); // Synchronous indexing documents from the specified folder

// Wykonaj wyszukiwanie
String query = "elementum"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

// Skorzystaj z wyników wyszukiwania
// Drukowanie wyniku
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());
}

// Zaznacz wystąpienia w tekście
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());
}

Powyższy przykładowy kod wygeneruje następujące dane wyjściowe:

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
Wyszukaj słowo w dokumencie PDF za pomocą języka Java

Wyszukaj słowo w dokumencie PDF za pomocą języka Java

Indeks i wydarzenie indeksowe

Klasa Index jest główną klasą służącą do indeksowania dokumentów i ich przeszukiwania. Indeks można utworzyć w pamięci lub na dysku, wywołując konstruktor tej klasy. Utworzyłem go na dysku, aby można go było ponownie wykorzystać.

Aby otrzymywać informacje o błędach indeksowania zapisałem się na wydarzenie ErrorOccurred. Wyświetli błędy, jeśli jakieś wystąpiły podczas indeksowania plików.

Dodaj pliki do indeksu

Metoda add klasy Index dodaje plik lub wszystkie pliki w folderze lub podfolderach według ścieżki bezwzględnej lub względnej. Wszystkie dokumenty znajdujące się na podanej ścieżce zostaną zindeksowane.

Wykonaj operację wyszukiwania

Klasa Index udostępnia różne metody search umożliwiające wykonanie operacji wyszukiwania. Możesz wyszukiwać według prostego słowa kluczowego lub definiując SearchQuery.

Klasa SearchResult udostępnia szczegóły wyniku wyszukiwania odpowiadającego wyszukiwanemu zapytaniu. Niektóre z metod opisano tutaj:

Podświetl wyniki wyszukiwania

Klasa HtmlHighlighter umożliwia podświetlanie wyników wyszukiwania w całym dokumencie sformatowanym w formacie HTML.

Metoda highlight klasy Index generuje dane wyjściowe HTML podkreślające wystąpienia znalezionych terminów. Więcej szczegółów na temat „[Podświetlanie wyników wyszukiwania]" 20" można znaleźć w dokumentacji.

Zdobądź bezpłatną licencję

Możesz wypróbować interfejs API bez ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.

Wniosek

W tym artykule dowiedziałeś się, jak wyszukiwać słowa w dokumencie PDF za pomocą języka Java. Więcej informacji na temat API GroupDocs.Search for Java można znaleźć w dokumentacji. W przypadku jakichkolwiek niejasności prosimy o kontakt na forum.

Zobacz też