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
- Localizar e substituir texto em PDF usando C++
- C++ Localizar e substituir texto em uma página PDF específica
- Substituir texto na região da página PDF usando C++
- Localizar e substituir texto em arquivos PDF usando expressões regulares
- Obtenha uma licença gratuita
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++.
- Carregue o arquivo PDF usando a classe Document.
- Crie uma instância da classe TextFragmentAbsorber e inicialize-a com o texto que deseja encontrar no arquivo PDF.
- Aceite o TextFragmentAbsorber para as páginas usando o Document->getPages()->Accept (System::SharedPtrText::TextFragmentAbsorber visitante) método.
- Recupere todas as ocorrências de texto usando o método TextFragmentAbsorber->getTextFragments().
- Percorra o TextFragmentCollection e atualize o texto usando o método TextFragment->setText (System::String value).
- Salve o arquivo PDF atualizado usando o método Document->Save (System::String outputFileName).
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.
- Carregue o arquivo PDF usando a classe Document.
- Crie uma instância da classe TextFragmentAbsorber e inicialize-a com o texto que deseja encontrar no arquivo PDF.
- Aceite o TextFragmentAbsorber para a página específica usando o Document->getPages()->idxget (int32t index)->Accept (System::SharedPtrText::TextFragmentAbsorber visitante) método.
- Recupere todas as ocorrências de texto usando o método TextFragmentAbsorber->getTextFragments().
- Percorra o TextFragmentCollection e atualize o texto usando o método TextFragment->setText (System::String value).
- Salve o arquivo PDF atualizado usando o método Document->Save (System::String outputFileName).
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.
- Carregue o arquivo PDF usando a classe Document.
- Crie uma instância da classe TextFragmentAbsorber e inicialize-a com o texto que você deseja localizar e substituir no arquivo PDF.
- Defina a região da página para pesquisa usando o método TextFragmentAbsorber->getTextSearchOptions()->setRectangle (System::SharedPtr< Aspose::Pdf::Rectangle> value).
- Aceite o TextFragmentAbsorber para a página específica usando o Document->getPages()->idxget (int32t index)->Accept (System::SharedPtrText::TextFragmentAbsorber visitante) método.
- Recupere todas as ocorrências de texto usando o método TextFragmentAbsorber->getTextFragments().
- Percorra o TextFragmentCollection e atualize o texto usando o método TextFragment->setText (System::String value).
- Salve o arquivo PDF atualizado usando o método Document->Save (System::String outputFileName).
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.
- Carregue o arquivo PDF usando a classe Document.
- Crie uma instância da classe TextFragmentAbsorber e inicialize-a com a expressão regular que deseja usar.
- Inicialize a classe TextSearchOptions e passe true para seu construtor. Isso indicará que você está pesquisando usando uma expressão regular.
- Atribua o objeto TextSearchOptions à classe TextFragmentAbsorber usando TextFragmentAbsorber->setTextSearchOptions (System::SharedPtrAspose::Pdf::Text::TextSearchOptions valor) método.
- Aceite o TextFragmentAbsorber para as páginas usando o Document->getPages()->Accept (System::SharedPtrText::TextFragmentAbsorber visitante) método.
- Recupere todas as ocorrências de texto usando o método TextFragmentAbsorber->getTextFragments().
- Percorra o TextFragmentCollection e atualize o texto usando o método TextFragment->setText (System::String value).
- Salve o arquivo PDF atualizado usando o método Document->Save (System::String outputFileName).
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.