Buscar una palabra en PDF usando C#

Es posible que deba buscar una información en particular, una frase de texto o una palabra de sus documentos. Como desarrollador de C#, puede buscar fácilmente cualquier texto de documentos PDF mediante programación en sus aplicaciones .NET. En este artículo, aprenderá a buscar texto en documentos PDF usando C#.

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

API de C# para buscar texto

Para buscar texto en documentos PDF, utilizaré la API GroupDocs.Search for .NET. 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. También le permite obtener la información requerida de archivos, documentos, correos electrónicos y archivos. Puede crear y fusionar varios índices para realizar búsquedas rápidas e inteligentes mediante consultas simples, booleanas, de expresión regular (regex), aproximadas y de otro tipo.

Puede descargar la DLL de la API o instalarla mediante NuGet.

Install-Package GroupDocs.Search

Buscar texto en documentos PDF usando C#

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

  • Crear una instancia de la clase Índice
  • Especifique la ruta a la carpeta de índice
  • Suscríbete a los índice de eventos
  • Agregue archivos PDF al Índice llamando al método Add()
  • Definir una consulta de búsqueda
  • Realice una búsqueda utilizando el método Search() con consulta de búsqueda
  • Use el Resultado de la búsqueda e imprima el resumen
  • Resalte los resultados buscados en la salida usando el método Highlight()

El siguiente ejemplo de código muestra cómo buscar texto en documentos PDF usando C#.

// Especifique la ruta a la carpeta de índice
string indexFolder = @"C:\Files\Index\";

// Especifique la ruta a una carpeta que contenga documentos PDF para buscar
string documentsFolder = @"C:\Files\Files\"; 

// crear o cargar un índice
Index index = new Index(indexFolder);

// Suscribirse a eventos de índice
index.Events.ErrorOccurred += (sender, args) =>
{
    // Escribir mensajes de error en la consola
    Console.WriteLine(args.Message);
};

// Agregar archivos sincrónicamente
// Documentos de indexación síncrona de la carpeta especificada
index.Add(documentsFolder); 

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

// Usar resultados de búsqueda
// Imprimiendo el resultado
Console.WriteLine("Documents found: " + result.DocumentCount);
Console.WriteLine("Total occurrences found: " + result.OccurrenceCount);

for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
}

// Resaltar ocurrencias en el texto
if (result.DocumentCount > 0)
{
    // Obtener el primer documento encontrado
    FoundDocument document = result.GetFoundDocument(0);

    string path = documentsFolder + "Highlighted.html";

    // Creando el adaptador de salida a un archivo
    OutputAdapter outputAdapter = new FileOutputAdapter(path);

    // Crear el objeto resaltador
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter);

    // Generación de documentos con formato HTML de salida con resultados de búsqueda resaltados
    index.Highlight(document, highlighter); 

    Console.WriteLine();
    Console.WriteLine("Generated HTML file can be opened with Internet browser.");
    Console.WriteLine("The file can be found by the following path:");
    Console.WriteLine(path);
}

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

Documents found: 1
Total occurrences found: 4
        Document: C:\Files\Files\sample.pdf
        Occurrences: 4

Generated HTML file can be opened with Internet browser.
The file can be found by the following path:
C:\Files\Files\Highlighted.html
Buscar-texto-o-palabra-en-PDF-usando-CSharp

Resaltó el texto buscado en documentos PDF usando C#

El Índice y el Evento del Índice

La clase Índice es la clase principal que proporciona funcionalidad para indexar los 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. En el ejemplo de código anterior, he creado el índice en el disco para que pueda reutilizarse.

El evento ErrorOccurred muestra los errores si ocurre alguno durante la indexación de los archivos. Por lo tanto, debe suscribirse a esto para recibir información sobre errores de indexación.

Agregar archivos al índice

El método Add() de la clase Index agrega un archivo o todos los archivos en una carpeta o subcarpetas específicas mediante 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 Search para realizar la operación de búsqueda. Puede buscar proporcionando una 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. Los siguientes métodos y propiedades de esta clase facilitan la obtención de detalles de los resultados de búsqueda:

Resalte los resultados de la búsqueda

La clase HtmlHighlighter resalta los resultados de la búsqueda en un texto completo del documento 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 “Resaltar resultados de búsqueda” en la documentación.

Búsqueda de texto con distinción entre mayúsculas y minúsculas en PDF usando C#

Puede buscar cualquier frase de texto específica o una palabra considerando letras mayúsculas y minúsculas en sus documentos PDF mediante programación siguiendo los sencillos pasos que se mencionan a continuación:

El siguiente ejemplo de código muestra cómo realizar una búsqueda de texto que distingue entre mayúsculas y minúsculas en un documento PDF usando C#.

// Especifique la ruta a la carpeta de índice
string indexFolder = @"C:\Files\Index\";

// Especifique la ruta a una carpeta que contenga documentos PDF para buscar
string documentsFolder = @"C:\Files\Files\";

// Crear índice en la carpeta especificada
Index index = new Index(indexFolder);

// Indexación de documentos de la carpeta especificada
index.Add(documentsFolder); 

// Definir opciones de búsqueda
SearchOptions options = new SearchOptions();
options.UseCaseSensitiveSearch = true; // Enabling case sensitive search

// buscar palabra
string query = "Vestibulum";

// Realizar la búsqueda
SearchResult result = index.Search(query, options);

// Imprimiendo el resultado
Console.WriteLine("Documents found: " + result.DocumentCount);
Console.WriteLine("Total occurrences found: " + result.OccurrenceCount);

for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
}
Documents found: 1
Total occurrences found: 2
        Document: C:\Files\Files\sample.pdf
        Occurrences: 2

La clase SearchOptions proporciona opciones para realizar las operaciones de búsqueda. La propiedad UseCaseSensitiveSearch de esta clase le permite realizar una búsqueda que distingue entre mayúsculas y minúsculas de una palabra o texto.

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 texto en un documento PDF usando C#. También ha aprendido a realizar una búsqueda de texto con distinción entre mayúsculas y minúsculas en un documento PDF mediante C#. Puede obtener más información sobre GroupDocs.Search para la API de .NET utilizando la documentación. En caso de cualquier ambigüedad, no dude en contactarnos en el foro.

Ver también