Pesquisar e Obter Texto das Páginas do Documento PDF

Pesquisar e Obter Texto de Todas as Páginas do Documento PDF

A classe TextFragmentAbsorber permite que você encontre texto, correspondendo a uma frase específica, de todas as páginas de um documento PDF. Para pesquisar texto em todo o documento, você precisa chamar o método Accept da coleção Pages. O método ‘Accept’ aceita um objeto TextFragmentAbsorber como parâmetro, que retorna uma coleção de objetos TextFragment.

O trecho de código a seguir mostra como pesquisar texto em todas as páginas.

using namespace System;
using namespace Aspose::Pdf;
using namespace Aspose::Pdf::Text;

void SearchAndGetTextFromAllThePagesOfPDFDocument() {
    String _dataDir("C:\\Samples\\");

    auto document = new Document(_dataDir + u"sample.pdf");

    // Criar objeto TextAbsorber para encontrar todas as instâncias da frase de pesquisa de entrada
    auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>("documento");

    // Aceitar o absorvedor para todas as páginas
    document->get_Pages()->Accept(textFragmentAbsorber);

    // Obter os fragmentos de texto extraídos na coleção
    auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

    // Percorrer os fragmentos
    for (auto textFragment : textFragmentCollection) {
        Console::WriteLine(u"Texto :- {0}", textFragment->get_Text());
        Console::WriteLine(u"Posição :- {0}", textFragment->get_Position());
        Console::WriteLine(u"XIndent :- {0}", textFragment->get_Position()->get_XIndent());
        Console::WriteLine(u"YIndent :- {0}", textFragment->get_Position()->get_YIndent());
        Console::WriteLine(u"Fonte - Nome :- {0}", textFragment->get_TextState()->get_Font()->get_FontName());
        Console::WriteLine(u"Fonte - É Acessível :- {0}", textFragment->get_TextState()->get_Font()->get_IsAccessible());
        Console::WriteLine(u"Fonte - Está Incorporada - {0}", textFragment->get_TextState()->get_Font()->get_IsEmbedded());
        Console::WriteLine(u"Fonte - É Subconjunto :- {0}", textFragment->get_TextState()->get_Font()->get_IsSubset());
        Console::WriteLine(u"Tamanho da Fonte :- {0}", textFragment->get_TextState()->get_FontSize());
        Console::WriteLine(u"Cor do Primeiro Plano :- {0}", textFragment->get_TextState()->get_ForegroundColor());
    }
}

Search and Get Text from all pages using Regular Expression

TextFragmentAbsorber ajuda você a procurar e recuperar texto, de todas as páginas, com base em uma expressão regular. Primeiro, você precisa passar uma expressão regular para o construtor TextFragmentAbsorber como a frase. Depois disso, você deve definir a propriedade TextSearchOptions do objeto TextFragmentAbsorber. Esta propriedade requer um objeto TextSearchOptions e você precisa passar true como um parâmetro para seu construtor ao criar novos objetos. Como você deseja recuperar o texto correspondente de todas as páginas, é necessário chamar o método Accept da coleção Pages. TextFragmentAbsorber retorna um TextFragmentCollection contendo todos os fragmentos que correspondem aos critérios especificados pela expressão regular. O trecho de código a seguir mostra como pesquisar e obter texto de todas as páginas com base em uma expressão regular.

void SearchAndGetTextFromPagesUsingRegularExpression()
{
    String _dataDir("C:\\Samples\\");

    auto document = new Document(_dataDir + u"sample.pdf");

    // Criar objeto TextAbsorber para encontrar todas as instâncias da frase de pesquisa de entrada
    auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4}-\\d{4}"); // como 1999-2000

    // Definir opção de pesquisa de texto para especificar o uso de expressão regular
    auto textSearchOptions = MakeObject<TextSearchOptions>(true);
    textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);

    // Aceitar o absorvedor para a primeira página do documento
    document->get_Pages()->Accept(textFragmentAbsorber);

    // Obter os fragmentos de texto extraídos na coleção
    auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

    // Percorrer os fragmentos
    for (auto textFragment : textFragmentCollection) {
        Console::WriteLine(u"Texto :- {0}", textFragment->get_Text());
        Console::WriteLine(u"Posição :- {0}", textFragment->get_Position());
        Console::WriteLine(u"XIndent :- {0}", textFragment->get_Position()->get_XIndent());
        Console::WriteLine(u"YIndent :- {0}", textFragment->get_Position()->get_YIndent());
        Console::WriteLine(u"Fonte - Nome :- {0}", textFragment->get_TextState()->get_Font()->get_FontName());
        Console::WriteLine(u"Fonte - É Acessível :- {0}", textFragment->get_TextState()->get_Font()->get_IsAccessible());
        Console::WriteLine(u"Fonte - Está Incorporada - {0}", textFragment->get_TextState()->get_Font()->get_IsEmbedded());
        Console::WriteLine(u"Fonte - É Subconjunto :- {0}", textFragment->get_TextState()->get_Font()->get_IsSubset());
        Console::WriteLine(u"Tamanho da Fonte :- {0}", textFragment->get_TextState()->get_FontSize());
        Console::WriteLine(u"Cor do Primeiro Plano :- {0}", textFragment->get_TextState()->get_ForegroundColor());
    }
}