Localizar e substituir texto em PDF usando C++

PDF é um formato popular amplamente usado para compartilhar documentos entre organizações e indivíduos. Pode haver cenários em que você precise localizar e substituir algum texto nos documentos PDF antes de compartilhar. Você pode fazer isso manualmente, mas isso levaria mais tempo e seria menos eficiente. A opção melhor e mais rápida seria fazer isso programaticamente. Neste artigo, você aprenderá como localizar e substituir texto em arquivos PDF usando C++.

API C++ para localizar e substituir texto em arquivos PDF

Aspose.PDF for C++ é uma biblioteca C++ para trabalhar com arquivos PDF. Ele fornece vários recursos que ajudam a automatizar vários aspectos de seus fluxos de trabalho de PDF. Um desses recursos é encontrar e substituir texto em arquivos PDF. Você pode instalar a API por meio do NuGet ou baixá-la diretamente da seção downloads.

PM> Install-Package Aspose.PDF.Cpp

Localizar e substituir texto em PDF usando C++

O Aspose.PDF para C++ fornece a classe TextFragmentAbsorber para pesquisar texto em documentos PDF. Você inicializa essa classe com o texto que deseja localizar e a usa para recuperar todos os fragmentos de texto correspondentes. Quando todos os fragmentos estiverem disponíveis, você faz um loop sobre eles e substitui o texto. A seguir estão as etapas para localizar e substituir texto em arquivos PDF usando C++.

Veja a seguir o código de exemplo para localizar e substituir texto em todo o arquivo PDF usando C++.

// Carregar arquivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

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

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

// Obtenha os fragmentos de texto extraídos
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Percorra os fragmentos
for (auto textFragment : textFragmentCollection)
{
	// Atualizar texto e outras propriedades
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Salve o documento PDF resultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

C++ Localizar e substituir texto em uma página PDF específica

Pode haver situações em que você deseja localizar e substituir apenas o texto em uma página específica, em vez de todo o documento. Para isso, aceite o objeto TextFragmentAbsorber para a página onde deseja substituir o texto. A seguir estão as etapas para localizar e substituir texto em uma página específica no documento PDF.

Veja a seguir o código de exemplo para localizar e substituir texto em uma página PDF específica usando C++.

// Carregar arquivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

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

// Aceite o absorvedor para a segunda página do documento
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);

// Obtenha os fragmentos de texto extraídos
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Percorra os fragmentos
for (auto textFragment : textFragmentCollection)
{
	// Atualizar texto e outras propriedades
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Salve o documento PDF resultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");

Substituir texto na região da página PDF usando C++

Em vez de pesquisar a página inteira, você pode especificar a região da página onde deseja substituir o texto. Para isso, a API disponibiliza a classe Rectangle. A seguir estão as etapas para localizar e substituir texto em uma parte específica da página PDF.

Veja a seguir o código de amostra para localizar e substituir texto em uma região de página PDF específica.

// Carregar arquivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");

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

// pesquisar texto dentro dos limites da página
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);

// especifique a região da página para TextSearchOptions
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));

// Aceite o absorvedor para a primeira página do documento
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);

// Obtenha os fragmentos de texto extraídos
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Percorra os fragmentos
for (auto textFragment : textFragmentCollection)
{
	// Atualizar texto e outras propriedades
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Salve o documento PDF resultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

Localizar e substituir texto em arquivos PDF usando expressões regulares

O Aspose.PDF para C++ também oferece a capacidade de pesquisar texto usando expressões regulares. Com expressões regulares, você pode encontrar texto como endereços de e-mail ou números de telefone, etc. Para isso, você deve especificar a expressão regular em vez da string de pesquisa e usar a classe TextSearchOptions para indicar que está usando uma expressão regular expressão para pesquisar. A seguir estão as etapas para localizar e substituir texto em arquivos PDF usando uma expressão regular.

Veja a seguir o código de exemplo para localizar e substituir texto em arquivos PDF usando uma expressão regular.

// Carregar arquivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 2.pdf");

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

// Defina a opção de pesquisa de texto para habilitar o uso de expressões regulares
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);

// Aceite o absorvedor para todas as páginas do documento
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);

// Obtenha os fragmentos de texto extraídos
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();

// Percorra os fragmentos
for (auto textFragment : textFragmentCollection)
{
	// Atualizar texto e outras propriedades
	textFragment->set_Text(u"UPDATED TEXT");
	textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
	textFragment->get_TextState()->set_FontSize(22);
}

// Salve o documento PDF resultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");

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 localizar e substituir texto em arquivos PDF usando C++. Você viu como substituir o texto em todo o documento PDF, uma página PDF específica ou uma região específica da página. Além disso, você aprendeu como pesquisar e substituir texto usando uma expressão regular. O Aspose.PDF para C++ é uma API poderosa com muitos recursos adicionais que tornam o trabalho com documentos PDF muito fácil. Você pode explorar a API em detalhes usando a documentação oficial. Se você tiver alguma dúvida, não hesite em nos contatar no fórum.

Veja também