Cerca una parola in PDF usando Java

Potrebbe essere necessario cercare un testo specifico da documenti Word o PDF. Come sviluppatore Java, puoi cercare qualsiasi testo da documenti PDF in modo programmatico. In questo articolo imparerai come cercare una parola nei documenti PDF usando Java.

I seguenti argomenti sono discussi/trattati in questo articolo:

API Java per la ricerca di testo

Userò l’API GroupDocs.Search for Java per la ricerca nei documenti PDF. Ti consente di eseguire operazioni di ricerca di testo in tutti i formati di documenti più diffusi come PDF, Word, Excel, PowerPoint e molti altri. Puoi recuperare facilmente le informazioni richieste da file, documenti, e-mail e archivi utilizzando questa API. Consente inoltre di creare e unire più indici. È possibile utilizzare query semplici, booleane, a espressioni regolari (Regex), Fuzzy e altri tipi di query per eseguire ricerche rapide e intelligenti negli indici.

Scarica e configura

Puoi scaricare il JAR dell’API o semplicemente aggiungere la seguente configurazione pom.xml nelle tue applicazioni Java basate su Maven per provare gli esempi di codice indicati di seguito.

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

Cerca testo in PDF utilizzando Java

Puoi cercare facilmente qualsiasi testo o una parola specifica nei tuoi documenti PDF seguendo i semplici passaggi indicati di seguito:

  • Crea un Indice
  • Specificare il percorso della cartella dell’indice
  • Iscriviti a indicizza eventi
  • Aggiungi file all’indice chiamando il metodo add.
  • Eseguire una ricerca utilizzando il metodo cerca.
  • Usa Risultato di ricerca e stampa il riepilogo
  • Evidenzia i risultati della ricerca nell’output utilizzando il metodo highlight.

L’esempio di codice seguente mostra come cercare una parola da un documento PDF utilizzando 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

// Crea un nuovo indice o
// Apri un indice esistente
Index index = new Index(indexFolder);

// Iscriviti agli eventi dell'indice
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
    }
});

// Aggiungi file in modo sincrono
index.add(documentsFolder); // Synchronous indexing documents from the specified folder

// Esegui la ricerca
String query = "elementum"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

// Usa i risultati di ricerca
// Stampa del risultato
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());
}

// Evidenzia le occorrenze nel testo
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());
}

L’esempio di codice sopra genererà il seguente output:

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
Cerca una parola nel documento PDF utilizzando Java

Cerca una parola nel documento PDF utilizzando Java

L’Indice e l’Evento Indice

La classe Index è la classe principale per l’indicizzazione dei documenti e la ricerca in essi. Un indice può essere creato in memoria o su disco chiamando il costruttore di questa classe. L’ho creato su disco in modo che possa essere riutilizzato.

Per ricevere informazioni sugli errori di indicizzazione, mi sono iscritto all’evento ErrorOccurred. Mostrerà gli eventuali errori verificatisi durante l’indicizzazione dei file.

Aggiungi file all’indice

Il metodo add della classe Index aggiunge un file o tutti i file in una cartella o sottocartelle tramite un percorso assoluto o relativo. Tutti i documenti sul percorso indicato verranno indicizzati.

Eseguire un’operazione di ricerca

La classe Index fornisce vari metodi search per eseguire l’operazione di ricerca. Puoi cercare per semplice parola chiave o definendo un SearchQuery.

La classe SearchResult fornisce i dettagli di un risultato di ricerca che corrisponde a una query di ricerca. Alcuni dei metodi sono descritti qui:

Evidenzia i risultati della ricerca

La classe HtmlHighlighter facilita l’evidenziazione dei risultati della ricerca in un intero testo del documento formattato in HTML.

Il metodo highlight della classe Index genera un output HTML che evidenzia le occorrenze dei termini trovati. Puoi trovare maggiori dettagli su “Evidenziazione dei risultati di ricerca” nella documentazione.

Ottieni una licenza gratuita

Puoi provare l’API senza limitazioni di valutazione richiedendo una licenza temporanea gratuita.

Conclusione

In questo articolo hai imparato come cercare una parola in un documento PDF usando Java. Puoi saperne di più su GroupDocs.Search per l’API Java utilizzando la documentazione. In caso di ambiguità, non esitare a contattarci sul forum.

Guarda anche