Buscar una palabra en PDF usando Java

Es posible que deba buscar un texto específico en documentos de Word o PDF. Como desarrollador de Java, puede buscar cualquier texto de documentos PDF mediante programación. En este artículo, aprenderá cómo buscar una palabra en documentos PDF usando Java.

Los siguientes temas se discuten/tratan en este artículo:

API de Java para buscar texto

Usaré la API GroupDocs.Search for Java para buscar en documentos PDF. Le permite realizar operaciones de búsqueda de texto en todos los formatos de documentos populares, como PDF, Word, Excel, PowerPoint y muchos más. Puede obtener la información requerida de archivos, documentos, correos electrónicos y archivos fácilmente utilizando esta API. También le permite crear y fusionar múltiples índices. Puede utilizar consultas simples, booleanas, de expresiones regulares (regex), aproximadas y de otro tipo para realizar búsquedas rápidas e inteligentes en los índices.

Descargar y configurar

Puede descargar el JAR de la API o simplemente agregar la siguiente configuración pom.xml en sus aplicaciones Java basadas en Maven para probar los ejemplos de código que se mencionan a continuación.

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

Buscar texto en PDF usando Java

Puede buscar fácilmente cualquier texto o una palabra específica en sus documentos PDF siguiendo los sencillos pasos que se mencionan a continuación:

El siguiente ejemplo de código muestra cómo buscar una palabra de un documento PDF usando 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

// Crear un nuevo índice o
// Abrir un índice existente
Index index = new Index(indexFolder);

// Suscribirse a eventos de índice
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
    }
});

// Agregar archivos sincrónicamente
index.add(documentsFolder); // Synchronous indexing documents from the specified folder

// Realizar búsqueda
String query = "elementum"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

// Usar resultados de búsqueda
// Imprimiendo el resultado
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());
}

// Resaltar ocurrencias en el texto
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());
}

El ejemplo de código anterior generará el siguiente resultado:

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
Busque una palabra en un documento PDF usando Java

Busque una palabra en un documento PDF usando Java

El Índice y el Evento del Índice

La clase Índice es la clase principal para indexar documentos y buscar a través de ellos. Se puede crear un índice en la memoria o en el disco llamando al constructor de esta clase. Lo he creado en disco para que pueda ser reutilizado.

Para recibir información sobre errores de indexación, me he suscrito al evento ErrorOccurred. Mostrará los errores si se produjo alguno durante la indexación de los archivos.

Agregar archivos al índice

El método add de la clase Index agrega un archivo o todos los archivos en una carpeta o subcarpetas por una ruta absoluta o relativa. Todos los documentos en la ruta dada serán indexados.

Realizar una operación de búsqueda

La clase Index proporciona varios métodos de búsqueda para realizar la operación de búsqueda. Puede buscar por palabra clave simple o definiendo una SearchQuery.

La clase SearchResult proporciona detalles de un resultado de búsqueda que coincide con una consulta de búsqueda. Algunos de los métodos se describen aquí:

Resalte los resultados de la búsqueda

La clase HtmlHighlighter facilita resaltar los resultados de la búsqueda en un documento de texto completo formateado en HTML.

El método highlight de la clase Index genera una salida HTML que resalta las apariciones de los términos encontrados. Puede encontrar más detalles sobre “Resultados de búsqueda destacados” en la documentación.

Obtenga una licencia gratis

Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.

Conclusión

En este artículo, ha aprendido a buscar una palabra en un documento PDF utilizando Java. Puede obtener más información sobre GroupDocs.Search para la API de Java utilizando la documentación. En caso de cualquier ambigüedad, no dude en contactarnos en el foro.

Ver también