Buscar y reemplazar texto en PDF usando C++

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

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++.

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.

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.

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.

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.

Ver también