
Pesquisar texto específico em PDF documentos é uma tarefa comum em sistemas de gerenciamento de documentos, ferramentas de revisão legal, processadores de faturas e outras aplicações empresariais. Seja você tentando localizar uma palavra-chave, extrair certos valores ou redigir informações sensíveis, automatizar a pesquisa em PDF pode economizar muito tempo e esforço.
Neste post do blog, você aprenderá como pesquisar texto em arquivos PDF programaticamente usando C#. Nós o guiaremos pelas principais características passo a passo com exemplos práticos de código C#.
Este artigo cobre os seguintes tópicos:
- C# Biblioteca para Pesquisar em Documentos PDF
- Pesquisar texto em PDF usando C#
- Busca sem distinção entre maiúsculas e minúsculas e por palavra inteira em PDF
- Buscando com Expressões Regulares em PDF
- Buscar e Extrair Texto com Detalhes de Posição
- Destacando ou Substituindo Texto Encontrado
- Pesquisar em Todas as Páginas ou Páginas Específicas
- Pesquisar e Redigir Informações Sensíveis
- Recursos Gratuitos
Biblioteca C# para Pesquisar em Documentos PDF
Aspose.PDF for .NET simplifica o processo de busca de texto em arquivos PDF usando C#. Ele permite que você encontre palavras exatas, combine padrões usando expressões regulares e até destaque ou substitua texto correspondente—tudo com apenas algumas linhas de código. Esta poderosa biblioteca oferece recursos robustos para manipular documentos PDF. Ela permite que os desenvolvedores implementem facilmente funcionalidades de busca. Com Aspose.PDF, você pode rapidamente encontrar palavras em um PDF, tornando-o uma ferramenta inestimável para desenvolvedores de software.
Antes de mergulhar na busca de texto em PDF, você precisa configurar seu ambiente de desenvolvimento. Siga estas etapas para começar com Aspose.PDF for .NET:
1. Instale Aspose.PDF for .NET.
Baixe-o do releases ou instale-o via NuGet.Abra seu projeto .NET no Visual Studio e execute o seguinte comando no Console do Gerenciador de Pacotes NuGet:
PM> Install-Package Aspose.PDF
Este comando adiciona a biblioteca Aspose.PDF ao seu projeto para que você possa acessar seus poderosos recursos de processamento de PDF.
2. Importar Namespaces Necessários
No topo do seu arquivo C#, adicione essas diretivas using:
using Aspose.Pdf;
using Aspose.Pdf.Text;
Agora você está pronto para começar a pesquisar texto dentro dos seus arquivos PDF usando a API Aspose.PDF.
Pesquisar Texto em PDF Usando C#
Com Aspose.PDF for .NET, você pode facilmente pesquisar palavras ou frases específicas em um PDF, localizar todas as suas instâncias e realizar ações como destacá-las ou extrair seus detalhes.
Siga estas etapas para realizar uma pesquisa de texto básica:
- Carregue o arquivo PDF de destino usando a classe Document.
- Criar um TextFragmentAbsorber para definir a palavra-chave de pesquisa.
- Execute o absorvedor em todas as páginas usando o método Accept().
- Recupere todos os fragmentos de texto correspondentes.
- Imprima o número de correspondências encontradas.
- Percorra e exiba cada correspondência com seu número de página.
O seguinte exemplo de código implementa essas etapas.
// Load the PDF file
Document pdfDocument = new Document("sample.pdf");
// Crie um absorvedor de texto com a palavra-chave de busca
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("invoice");
// Aplique o absorvedor a todas as páginas
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Get the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Print how many times the keyword was found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Loop through and print each found text
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Exemplo de Saída
Found 3 instance(s) of the keyword.
Text: invoice | Page: 1
Text: invoice | Page: 2
Text: invoice | Page: 3
Este exemplo demonstra uma busca simples por palavras-chave que funciona em todas as páginas do PDF. Você verá o texto correspondente junto com o número da página.
Entendendo as Principais Classes Usadas na Busca de PDF
Para entender melhor o que está acontecendo no código, aqui está uma rápida análise das principais classes e métodos envolvidos:
Documento
: Representa todo o arquivo PDF. Ele fornece acesso a páginas, conteúdo e estrutura.TextFragmentAbsorber
: Encontra todas as ocorrências de uma determinada string ou padrão dentro do PDF. Você também pode ativar recursos como pesquisa sem distinção entre maiúsculas e minúsculas ou pesquisa baseada em regex.Accept()
: Aplica o absorvedor a cada página. Ele escaneia o documento e coleta fragmentos correspondentes.TextFragments
: Uma coleção de todos os fragmentos de texto correspondentes retornados pelo absorvedor.TextFragment
: Cada correspondência individual com detalhes como conteúdo, posição e número da página.
Pesquisa Sem Diferenciação de Maiúsculas e Minúsculas e Palavra Completa usando C#
Quando você pesquisa conteúdo em PDF, precisa controlar como o sistema encontra correspondências para garantir resultados precisos. Às vezes, você quer ignorar a capitalização das letras ("Fatura" vs. "fatura"), ou deseja corresponder apenas palavras completas—não correspondências parciais dentro de outras palavras.
Aspose.PDF for .NET oferece as ferramentas para fazer ambos.
Pesquisa sem diferenciar maiúsculas de minúsculas
Por padrão, as pesquisas diferenciam maiúsculas de minúsculas. Para ignorar a caixa das letras, use TextSearchOptions
com IgnoreCase
habilitado:
// Carregue o arquivo PDF
Document pdfDocument = new Document("sample.pdf");
// Criar um absorvedor de texto com uma expressão regular sem distinção entre maiúsculas e minúsculas
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("(?i)INVOICE");
// Defina as opções de pesquisa de texto para habilitar o uso de expressões regulares
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Aplique o absorvedor em todas as páginas
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Retrieve the matched text fragments
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Percorra e exiba cada fragmento de texto encontrado
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Isto encontrará tanto "Invoice", "invoice", "INVOICE", quanto outras variações.
Correspondência Apenas de Palavras Inteiras
Você também pode evitar correspondências parciais. Por exemplo, procurar por car
não deve corresponder a care
ou scar
.
// Carregue o arquivo PDF
Document pdfDocument = new Document("sample.pdf");
// Crie um absorvedor de texto com um padrão de expressão regular para correspondência de palavras inteiras.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(@"\bcar\b");
// Defina opções de pesquisa de texto para habilitar o uso de expressões regulares.
TextSearchOptions textSearchOptions = new TextSearchOptions(true);
textFragmentAbsorber.TextSearchOptions = textSearchOptions;
// Aplique o absorvedor a todas as páginas
pdfDocument.Pages.Accept(textFragmentAbsorber);
// Recuperar os fragmentos de texto correspondentes
TextFragmentCollection textFragments = textFragmentAbsorber.TextFragments;
// Output the number of matches found
Console.WriteLine($"Found {textFragments.Count} instance(s) of the keyword.");
// Percorra e exiba cada fragmento de texto encontrado
foreach (TextFragment fragment in textFragments)
{
Console.WriteLine($"Text: {fragment.Text} | Page: {fragment.Page.Number}");
}
Isso garante que apenas instâncias autônomas da palavra “carro” sejam correspondidas.
Pesquisando com Expressões Regulares em PDF
Em certos casos, você precisa encontrar mais do que uma palavra específica—você quer combinar padrões como datas, endereços de e-mail ou números de referência. É aí que entram as expressões regulares (regex).
Aspose.PDF for .NET permite que você use regex para pesquisa avançada de texto em qualquer parte do seu documento PDF.
Exemplo: Encontre Todas as Datas em um PDF
Vamos dizer que você queira encontrar todas as datas no formato dd/mm/yyyy
:
// Carregar PDF e pesquisar texto
Document pdfDocument = new Document("sample.pdf");
// Ativar regex nas opções de pesquisa
TextSearchOptions searchOptions = new TextSearchOptions(true)
{
IsRegularExpressionUsed = true
};
// Criar absorvedor com padrão de data
TextFragmentAbsorber absorber = new TextFragmentAbsorber(@"\d{2}/\d{2}/\d{4}", searchOptions);
// Aplique o absorvedor nas páginas
pdfDocument.Pages.Accept(absorber);
// Loop e imprima os padrões encontrados
foreach (TextFragment fragment in absorber.TextFragments)
{
Console.WriteLine($"Found date: {fragment.Text} on Page {fragment.Page.Number}");
}
Outros Padrões Úteis:
- Emails:
\b[A-Za-z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
- Números de telefone:
\d{3}[-.\s]??\d{3}[-.\s]??\d{4}
- Invoice Numbers:
INV-\d+
O Regex expande suas capacidades de pesquisa muito além do texto estático, ajudando você a extrair dados estruturados de documentos não estruturados.
Pesquisar e Extrair Texto com Detalhes de Posição
Às vezes, encontrar o texto não é suficiente—você pode precisar saber exatamente onde ele aparece no PDF. Aspose.PDF permite que você extraia o número da página, as coordenadas e os detalhes de formatação de cada correspondência.
Este recurso é especialmente útil para construir índices, etiquetar documentos ou criar links clicáveis.
Exemplo: Obter Posição de Cada Correspondência
// Carregar PDF e procurar por texto
Document pdfDocument = new Document("sample.pdf");
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
// Obtenha fragmentos correspondentes
TextFragmentCollection fragments = absorber.TextFragments;
// Imprima a posição e o texto de cada partida
foreach (TextFragment fragment in fragments)
{
Console.WriteLine($"Text: {fragment.Text}");
Console.WriteLine($"Page: {fragment.Page.Number}");
Console.WriteLine($"Position - X: {fragment.Position.XIndent}, Y: {fragment.Position.YIndent}");
Console.WriteLine($"Font: {fragment.TextState.Font.FontName}, Size: {fragment.TextState.FontSize}");
Console.WriteLine("------------");
}
Sample Output
Text: invoice
Page: 1
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 2
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Text: invoice
Page: 3
Position - X: 33.482, Y: 708.246
Font: Helvetica, Size: 12
------------
Você agora sabe exatamente onde a palavra `fatura” aparece, junto com como ela é estilizada. Esse nível de detalhe abre a porta para processamento avançado, como anotações, dicas de ferramentas ou realces dinâmicos.
Destacar ou Substituir Texto Encontrado
Uma vez que você localizou um texto específico em um PDF, pode dar um passo a mais destacando-o ou até substituindo-o por novo conteúdo. Aspose.PDF for .NET permite que você estile ou modifique o texto correspondente facilmente usando o objeto TextFragment
.
Pesquisar e Destacar Texto em PDF
Você pode destacar visualmente o texto mudando sua cor de fundo e cor da fonte.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber);
foreach (TextFragment fragment in absorber.TextFragments)
{
// Highlight by changing text appearance
fragment.TextState.BackgroundColor = Color.Yellow;
fragment.TextState.ForegroundColor = Color.Red;
fragment.TextState.FontStyle = FontStyles.Bold;
}
Isso é útil para revisar, marcar em vermelho ou gerar relatórios anotados.
Encontrar e Substituir Texto
Precisa redigir ou atualizar o texto no documento? Basta substituí-lo diretamente:
foreach (TextFragment fragment in absorber.TextFragments)
{
fragment.Text = "REDACTED";
}
Você pode até aplicar uma nova formatação ao substituir:
fragment.TextState.FontSize = 12;
fragment.TextState.Font = FontRepository.FindFont("Arial");
fragment.TextState.ForegroundColor = Color.Black;
Destacar e substituir texto programaticamente permite que você automatize muitas tarefas de processamento de documentos, como limpar templates, atualizar conteúdo desatualizado ou censurar dados privados.
Pesquisar em Todas as Páginas ou Páginas Específicas
Por padrão, o Aspose.PDF pesquisa em todas as páginas de um PDF. Mas às vezes, você pode querer limitar a busca a uma página específica ou a um intervalo de páginas—especialmente ao trabalhar com arquivos grandes ou quando o conteúdo é previsível.
Aspose.PDF facilita fazer ambos.
Pesquisar em todas as páginas (padrão)
Se você não especificar uma página, o absorvedor pesquisa automaticamente em todas as páginas.
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
pdfDocument.Pages.Accept(absorber); // Searches all pages
Pesquisar em uma Página Específica
Você também pode pesquisar uma única página direcionando-a diretamente:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Search only on page 2
pdfDocument.Pages[2].Accept(absorber);
Pesquisar em uma faixa de páginas
Para pesquisar um intervalo personalizado (por exemplo, páginas 2 a 4), basta percorrer o intervalo:
TextFragmentAbsorber absorber = new TextFragmentAbsorber("invoice");
// Loop through selected pages
for (int i = 2; i <= 4; i++)
{
pdfDocument.Pages[i].Accept(absorber);
}
Esta abordagem oferece total controle sobre o desempenho e a precisão, especialmente útil para documentos digitalizados ou seccionados.
Caso de Uso Avançado: Buscar e Redigir Informações Sensíveis
Em documentos legais, de RH ou financeiros, é comum ocultar conteúdo sensível—como nomes, IDs ou números de conta—antes de compartilhar. Aspose.PDF for .NET torna isso fácil, combinando recursos de busca com recursos de edição.
Você pode procurar termos e, em seguida, aplicar uma sobreposição preta usando RedactionAnnotation
.
// Carregar PDF e procurar texto
Document pdfDocument = new Document("sample.pdf");
// Search for the name \"John Doe\"
TextFragmentAbsorber absorber = new TextFragmentAbsorber("John Doe");
pdfDocument.Pages.Accept(absorber);
// Percorra os fragmentos encontrados e redija.
foreach (TextFragment fragment in absorber.TextFragments)
{
// Obter posição e dimensões
Aspose.Pdf.Rectangle rect = new Aspose.Pdf.Rectangle(
fragment.Position.XIndent,
fragment.Position.YIndent,
fragment.Position.XIndent + fragment.Rectangle.Width,
fragment.Position.YIndent + fragment.Rectangle.Height
);
// Create a redaction annotation
RedactionAnnotation redaction = new RedactionAnnotation(fragment.Page, rect)
{
FillColor = Color.Black,
Color = Color.Black
};
// Adicionar e aplicar redação
fragment.Page.Annotations.Add(redaction);
redaction.Redact();
}
// Save the modified document
pdfDocument.Save("SearchAndRedact.pdf");
O que Acontece
- O texto alvo ("John Doe") é encontrado e coberto com uma caixa preta.
- Isso não é apenas visual—ele remove o conteúdo da camada PDF, tornando-o irrecuperável a partir do arquivo.
Obtenha uma Licença Grátis
Agora que você aprendeu a pesquisar, extrair, destacar e selecionar texto em PDFs usando Aspose.PDF for .NET, é hora de colocar esse conhecimento em prática.
Experimente você mesmo: Baixe uma licença temporária gratuita e comece a construir suas próprias ferramentas PDF inteligentes.
Pesquisar em PDF: Recursos Gratuitos
Quer ir além de apenas pesquisar texto em PDFs? Explore todas as capacidades do Aspose.PDF for .NET com estes recursos gratuitos e amigáveis para desenvolvedores:
Guia do Desenvolvedor Aprenda como criar, modificar, converter e proteger arquivos PDF programaticamente. Aspose.PDF for .NET Documentation
Ferramentas Online Gratuitas Converta, una, divida e edite arquivos PDF diretamente no seu navegador. Aspose Free PDF Tools
Referência da API Saiba mais sobre classes, propriedades e métodos disponíveis em Aspose.PDF for .NET para acelerar seu desenvolvimento. Aspose.PDF API Reference
Fórum de Suporte Faça perguntas, reporte problemas e obtenha respostas diretamente dos especialistas da Aspose. Aspose Support Forum
Esses recursos são gratuitos e estão disponíveis para ajudar você a aproveitar ao máximo sua jornada de desenvolvimento em PDF.
Conclusão
Pesquisar texto em arquivos PDF é um recurso vital para muitos aplicativos baseados em documentos — quer você esteja extraindo dados, auditando conteúdo ou preparando arquivos para redação. Com Aspose.PDF for .NET, você pode facilmente realizar buscas por palavras-chave, usar expressões regulares, destacar resultados e até mesmo remover informações sensíveis com precisão e controle. Aspose.PDF oferece uma API amigável para desenvolvedores que simplifica operações complexas de PDF — economizando seu tempo enquanto possibilita uma automação poderosa.
Se você tiver alguma dúvida ou precisar de mais assistência, sinta-se à vontade para entrar em contato em nosso forum de suporte gratuito.