Pesquisar uma palavra em PDF usando Java

Talvez seja necessário pesquisar um texto específico em documentos do Word ou PDF. Como desenvolvedor Java, você pode pesquisar qualquer texto de documentos PDF programaticamente. Neste artigo, você aprenderá como pesquisar uma palavra em documentos PDF usando Java.

Os seguintes tópicos são discutidos/abordados neste artigo:

API Java para pesquisa de texto

Usarei a API GroupDocs.Search for Java para pesquisar em documentos PDF. Ele permite que você execute operações de pesquisa de texto em todos os formatos de documentos populares, como PDF, Word, Excel, PowerPoint e muito mais. Você pode buscar suas informações necessárias de arquivos, documentos, e-mails e arquivos facilmente usando esta API. Também permite criar e mesclar vários índices. Você pode usar simples, Booleana, Expressão Regular (Regex), Fuzzy e outros tipos de consultas para pesquisar índices de forma rápida e inteligente.

Baixe e configure

Você pode baixar o JAR da API ou apenas adicionar a seguinte configuração pom.xml em seus aplicativos Java baseados em Maven para experimentar os exemplos de código mencionados abaixo.

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

Pesquisar texto em PDF usando Java

Você pode pesquisar facilmente qualquer texto ou uma palavra específica em seus documentos PDF seguindo as etapas simples mencionadas abaixo:

  • Crie um Índice
  • Especifique o caminho para a pasta de índice
  • Inscreva-se em eventos de índice
  • Adicione arquivos ao Index chamando o método add
  • Realize uma pesquisa usando o método search
  • Use SearchResult e imprima o resumo
  • Realce os resultados pesquisados na saída usando o método highlight

O exemplo de código a seguir mostra como pesquisar uma palavra em um 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

// Crie um novo índice ou
// Abra um índice existente
Index index = new Index(indexFolder);

// Assine 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
    }
});

// Adicionar arquivos de forma síncrona
index.add(documentsFolder); // Synchronous indexing documents from the specified folder

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

// Usar resultados de pesquisa
// Imprimindo o 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());
}

// Realçar ocorrências no 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());
}

O exemplo de código acima deve gerar a seguinte saída:

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
Pesquisar uma palavra em um documento PDF usando Java

Pesquisar uma palavra em um documento PDF usando Java

O Índice e o Evento de Índice

A classe Index é a classe principal para indexar documentos e pesquisá-los. Um índice pode ser criado na memória ou no disco chamando o construtor desta classe. Eu o criei em disco para que possa ser reutilizado.

Para receber informações sobre erros de indexação, assinei o evento ErrorOccurred. Ele mostrará os erros se algum ocorreu durante a indexação dos arquivos.

Adicionar arquivos ao índice

O método add da classe Index adiciona um arquivo ou todos os arquivos em uma pasta ou subpastas por um caminho absoluto ou relativo. Todos os documentos no caminho fornecido serão indexados.

Executar uma operação de pesquisa

A classe Index fornece vários métodos search para realizar a operação de pesquisa. Você pode pesquisar por palavra-chave simples ou definindo uma SearchQuery.

A classe SearchResult fornece detalhes de um resultado de pesquisa que corresponde a uma consulta de pesquisa. Alguns dos métodos são descritos aqui:

Destaque os resultados da pesquisa

A classe HtmlHighlighter facilita o destaque dos resultados da pesquisa em um texto de documento inteiro formatado em HTML.

O método highlight da classe Index gera saída HTML destacando ocorrências de termos encontrados. Você pode encontrar mais detalhes sobre “Destacar resultados da pesquisa” na documentação.

Obtenha uma licença gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como pesquisar uma palavra em um documento PDF usando Java. Você pode aprender mais sobre GroupDocs.Search for Java API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no fórum.

Veja também