PDF es un formato popular que se usa ampliamente para compartir documentos entre organizaciones e individuos. Puede haber escenarios en los que tenga que buscar y reemplazar algún texto en los documentos PDF antes de compartirlos. Puede hacerlo manualmente, pero eso llevaría más tiempo y sería menos eficiente. La opción mejor y más rápida sería hacer esto mediante programación. En este artículo, aprenderá a buscar y reemplazar texto en archivos PDF utilizando C++.
- API de C++ para buscar y reemplazar texto en archivos PDF
- Buscar y reemplazar texto en PDF usando C++
- C++ Buscar y reemplazar texto en una página PDF específica
- Reemplazar texto en la región de la página PDF usando C++
- Buscar y reemplazar texto en archivos PDF usando expresiones regulares
- Obtenga una licencia gratis
API de C++ para buscar y reemplazar texto en archivos PDF
Aspose.PDF for C++ es una biblioteca de C++ para trabajar con archivos PDF. Proporciona un montón de funciones que lo ayudan a automatizar varios aspectos de sus flujos de trabajo de PDF. Una de esas características es encontrar y reemplazar texto en archivos PDF. Puede instalar la API a través de NuGet o descargarla directamente desde la sección descargas.
PM> Install-Package Aspose.PDF.Cpp
Buscar y reemplazar texto en PDF usando C++
Aspose.PDF for C++ proporciona la clase TextFragmentAbsorber para buscar texto en documentos PDF. Inicializas esta clase con el texto que deseas encontrar y lo usas para recuperar todos los fragmentos de texto coincidentes. Una vez que todos los fragmentos están disponibles, los recorre y reemplaza el texto. Los siguientes son los pasos para buscar y reemplazar texto en archivos PDF usando C++.
- Cargue el archivo PDF utilizando la clase Document.
- Cree una instancia de la clase TextFragmentAbsorber e inicialícela con el texto que desea encontrar en el archivo PDF.
- Acepte TextFragmentAbsorber para las páginas usando Document->getPages()->Accept (System::SharedPtrText::TextFragmentAbsorber visitante) método.
- Recupere todas las ocurrencias de texto usando el método TextFragmentAbsorber->getTextFragments().
- Recorra TextFragmentCollection y actualice el texto usando el método TextFragment->setText (System::String value).
- Guarde el archivo PDF actualizado con el método Document->Save(System::String outputFileName).
El siguiente es el código de muestra para buscar y reemplazar texto en todo el archivo PDF usando C++.
// Cargar archivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// Cree un objeto TextAbsorber para encontrar todas las instancias de la frase de búsqueda de entrada
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");
// Aceptar el absorbedor para todas las páginas.
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);
// Obtener los fragmentos de texto extraídos
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// Bucle a través de los fragmentos
for (auto textFragment : textFragmentCollection)
{
// Actualizar texto y otras propiedades
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// Guarde el documento PDF resultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");
C++ Buscar y reemplazar texto en una página PDF específica
Puede haber situaciones en las que solo desee buscar y reemplazar texto en una página específica en lugar de todo el documento. Para esto, acepta el objeto TextFragmentAbsorber para la página donde deseas reemplazar el texto. Los siguientes son los pasos para buscar y reemplazar texto en una página en particular en el documento PDF.
- Cargue el archivo PDF utilizando la clase Document.
- Cree una instancia de la clase TextFragmentAbsorber e inicialícela con el texto que desea encontrar en el archivo PDF.
- Acepte TextFragmentAbsorber para la página en particular usando Document->getPages()->idxget (int32t index)->Accept (System::SharedPtrText::TextFragmentAbsorber visitante) método.
- Recupere todas las apariciones de texto usando el método TextFragmentAbsorber->getTextFragments().
- Recorra TextFragmentCollection y actualice el texto usando el método TextFragment->setText (System::String value).
- Guarde el archivo PDF actualizado utilizando el método Document->Save(System::String outputFileName).
El siguiente es el código de muestra para buscar y reemplazar texto en una página PDF específica usando C++.
// Cargar archivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// Cree un objeto TextAbsorber para encontrar todas las instancias de la frase de búsqueda de entrada
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");
// Aceptar el absorbedor para la segunda página del documento
pdfDocument->get_Pages()->idx_get(2)->Accept(textFragmentAbsorber);
// Obtener los fragmentos de texto extraídos
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// Bucle a través de los fragmentos
for (auto textFragment : textFragmentCollection)
{
// Actualizar texto y otras propiedades
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// Guarde el documento PDF resultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument2.pdf");
Reemplazar texto en la región de la página PDF usando C++
En lugar de buscar en toda la página, puede especificar la región de la página donde desea reemplazar el texto. Para ello, la API proporciona la clase Rectangle. Los siguientes son los pasos para buscar y reemplazar texto en una parte específica de la página PDF.
- Cargue el archivo PDF utilizando la clase Document.
- Cree una instancia de la clase TextFragmentAbsorber e inicialícela con el texto que desea buscar y reemplazar en el archivo PDF.
- Establezca la región de la página para buscar utilizando el método TextFragmentAbsorber->getTextSearchOptions()->setRectangle (System::SharedPtr< Aspose::Pdf::Rectangle> value).
- Acepte TextFragmentAbsorber para la página en particular usando Document->getPages()->idxget (int32t index)->Accept (System::SharedPtrText::TextFragmentAbsorber visitante) método.
- Recupere todas las ocurrencias de texto usando el método TextFragmentAbsorber->getTextFragments().
- Recorra TextFragmentCollection y actualice el texto usando el método TextFragment->setText (System::String value).
- Guarde el archivo PDF actualizado usando el método Document->Save(System::String outputFileName).
El siguiente es el código de muestra para buscar y reemplazar texto en una región de página PDF específica.
// Cargar archivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 1.pdf");
// Cree un objeto TextAbsorber para encontrar todas las instancias de la frase de búsqueda de entrada
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"Document");
// buscar texto dentro de los límites de la página
textFragmentAbsorber->get_TextSearchOptions()->set_LimitToPageBounds(true);
// especificar la región de la página para TextSearchOptions
textFragmentAbsorber->get_TextSearchOptions()->set_Rectangle(MakeObject<Rectangle>(100, 100, 800, 700));
// Aceptar el absorbedor para la primera página del documento
pdfDocument->get_Pages()->idx_get(1)->Accept(textFragmentAbsorber);
// Obtener los fragmentos de texto extraídos
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// Bucle a través de los fragmentos
for (auto textFragment : textFragmentCollection)
{
// Actualizar texto y otras propiedades
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// Guarde el documento PDF resultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");
Buscar y reemplazar texto en archivos PDF usando expresiones regulares
Aspose.PDF for C++ también ofrece la posibilidad de buscar texto mediante expresiones regulares. Con expresiones regulares, puede encontrar texto como direcciones de correo electrónico o números de teléfono, etc. Para esto, debe especificar la expresión regular en lugar de la cadena de búsqueda y usar la clase TextSearchOptions para indicar que está usando una expresión regular. expresión para buscar. Los siguientes son los pasos para buscar y reemplazar texto en archivos PDF usando una expresión regular.
- Cargue el archivo PDF utilizando la clase Document.
- Crea una instancia de la clase TextFragmentAbsorber e inicialízala con la expresión regular que quieras usar.
- Inicialice la clase TextSearchOptions y pase verdadero a su constructor. Indicará que está buscando usando una expresión regular.
- Asigne el objeto TextSearchOptions a la clase TextFragmentAbsorber usando TextFragmentAbsorber->setTextSearchOptions (System::SharedPtrAspose::Pdf::Text::TextSearchOptions valor) método.
- Acepte TextFragmentAbsorber para las páginas usando Document->getPages()->Accept (System::SharedPtrText::TextFragmentAbsorber visitante) método.
- Recupere todas las ocurrencias de texto usando el método TextFragmentAbsorber->getTextFragments().
- Recorra TextFragmentCollection y actualice el texto usando el método TextFragment->setText (System::String value).
- Guarde el archivo PDF actualizado con el método Document->Save(System::String outputFileName).
El siguiente es el código de muestra para buscar y reemplazar texto en archivos PDF usando una expresión regular.
// Cargar archivo PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\Sample 2.pdf");
// Cree un objeto TextAbsorber para encontrar todas las instancias de la frase de búsqueda de entrada
auto textFragmentAbsorber = MakeObject<TextFragmentAbsorber>(u"\\d{4} - \\d{4}"); // Like 1999-2000
// Establezca la opción de búsqueda de texto para habilitar el uso de expresiones regulares
auto textSearchOptions = MakeObject<TextSearchOptions>(true);
textFragmentAbsorber->set_TextSearchOptions(textSearchOptions);
// Aceptar el absorbedor para todas las páginas del documento
pdfDocument->get_Pages()->Accept(textFragmentAbsorber);
// Obtener los fragmentos de texto extraídos
auto textFragmentCollection = textFragmentAbsorber->get_TextFragments();
// Bucle a través de los fragmentos
for (auto textFragment : textFragmentCollection)
{
// Actualizar texto y otras propiedades
textFragment->set_Text(u"UPDATED TEXT");
textFragment->get_TextState()->set_Font(FontRepository::FindFont(u"TimesNewRoman"));
textFragment->get_TextState()->set_FontSize(22);
}
// Guarde el documento PDF resultante.
pdfDocument->Save(u"OutputDirectory\\UpdatedDocument.pdf");
Obtenga una licencia gratis
Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.
Conclusión
En este artículo, ha aprendido a buscar y reemplazar texto en archivos PDF usando C++. Ha visto cómo reemplazar texto en todo el documento PDF, una página PDF específica o una región particular de la página. Además, ha aprendido a buscar y reemplazar texto usando una expresión regular. Aspose.PDF for C++ es una potente API con muchas características adicionales que hacen que trabajar con documentos PDF sea pan comido. Puede explorar la API en detalle utilizando la documentación oficial. Si tiene alguna pregunta, no dude en contactarnos en el foro.