Los marcadores en un archivo PDF son útiles para marcar puntos de interés en el documento. Estos le permiten saltar rápidamente a un punto específico del documento. Es posible que se encuentre en situaciones en las que necesite agregar, leer, modificar o eliminar marcadores en un archivo PDF mediante programación. Para eso, este artículo te enseñará cómo trabajar con marcadores en archivos PDF usando C++.

API de C++ para trabajar con marcadores en archivos PDF

Aspose.PDF for C++ es una biblioteca de C++ que le permite crear, leer y actualizar documentos PDF. Además, la API admite agregar, leer, modificar y eliminar marcadores de 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

Agregar marcadores en archivos PDF usando C++

Los siguientes son los pasos para agregar un marcador en un archivo PDF.

El siguiente código de ejemplo demuestra cómo agregar un marcador en un archivo PDF usando C++.

// Crear una instancia de la clase PdfBookmarkEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// Cargue el documento PDF
editor->BindPdf(u"SourceDirectory\\Sample 1.pdf");

// Crear el marcador
editor->CreateBookmarkOfPage(u"Bookmark for page 1", 1);

// Guardar el documento PDF
editor->Save(u"OutputDirectory\\AddBookmark_out.pdf");
Salida generada por el código de muestra

Salida generada por el código de muestra

Agregar marcadores anidados en archivos PDF

También puede agregar marcadores anidados mediante la API de Aspose.PDF for C++. Los siguientes son los pasos para agregar marcadores anidados.

El siguiente código de ejemplo muestra cómo agregar marcadores anidados en un archivo PDF usando C++.

// Crear una instancia de la clase PdfBookmarkEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// Cargue el documento PDF
editor->BindPdf(u"SourceDirectory\\Sample 1.pdf");

// Crear marcador del primer hijo
System::SharedPtr<Aspose::Pdf::Facades::Bookmark> bm1 = System::MakeObject<Aspose::Pdf::Facades::Bookmark>();
bm1->set_PageNumber(1);
bm1->set_Title(u"First child");

// Crear segundo marcador secundario
System::SharedPtr<Aspose::Pdf::Facades::Bookmark> bm2 = System::MakeObject<Aspose::Pdf::Facades::Bookmark>();
bm2->set_PageNumber(2);
bm2->set_Title(u"Second child");

// Crear marcador principal
System::SharedPtr<Aspose::Pdf::Facades::Bookmark> bm = System::MakeObject<Aspose::Pdf::Facades::Bookmark>();
bm->set_Action(u"GoTo");
bm->set_PageNumber(1);
bm->set_Title(u"Parent");

// Establecer los marcadores secundarios
System::SharedPtr<Aspose::Pdf::Facades::Bookmarks> bms = System::MakeObject<Aspose::Pdf::Facades::Bookmarks>();
bms->Add(bm1);
bms->Add(bm2);
bm->set_ChildItem(bms);

// Agregar los marcadores al archivo PDF
editor->CreateBookmarks(bm);

// Guardar el documento PDF
editor->Save(u"OutputDirectory\\AddChildBookmark_out.pdf");
Salida generada por el código de muestra

Salida generada por el código de muestra

Leer marcadores de un archivo PDF usando C++

Para leer los marcadores, utilice el método PdfBookmarkEditor->ExtractBookmarks(). Los siguientes son los pasos para leer marcadores de un archivo PDF.

El siguiente código de ejemplo muestra cómo leer marcadores de un archivo PDF usando C++.

// Crear una instancia de la clase PdfBookmarkEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// Cargue el documento PDF
editor->BindPdf(u"SourceDirectory\\BookmarkSample.pdf");

// Recuperar todos los Marcadores
System::SharedPtr <Bookmarks> bms = editor->ExtractBookmarks();

// Bucle a través de los marcadores
for (System::SharedPtr<Bookmark> bm : bms) {
	
	// Mostrar el título del marcador
	Console::WriteLine(bm->get_Title());

	// Mostrar el destino del marcador
	Console::WriteLine(bm->get_Destination());
}

Modificar el título del marcador usando C++

Los siguientes son los pasos para modificar el título de un marcador existente en un archivo PDF.

El siguiente código de ejemplo muestra cómo modificar el título de un marcador existente en un archivo PDF.

// Crear una instancia de la clase PdfBookmarkEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// Cargue el documento PDF
editor->BindPdf(u"SourceDirectory\\BookmarkSample.pdf");

// Modificar título de marcador
editor->ModifyBookmarks(u"bookmark for page 1", u"Page 1 Bookmark");

// Guardar el documento PDF
editor->Save(u"OutputDirectory\\ModifyBookmark_out.pdf");

Eliminar un marcador particular usando C++

La API proporciona el método PdfBookmarkEditor->DeleteBookmarks(System::String title) para eliminar un marcador particular de un archivo PDF. Los siguientes son los pasos para eliminar un marcador específico.

El siguiente código de ejemplo muestra cómo eliminar un marcador en particular usando C++.

// Crear una instancia de la clase PdfBookmarkEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// Cargue el documento PDF
editor->BindPdf(u"SourceDirectory\\BookmarkSample.pdf");

// Eliminar un marcador en particular
editor->DeleteBookmarks(u"bookmark for page 1");

// Guardar el documento PDF
editor->Save(u"OutputDirectory\\DeleteParticularBookmark_out.pdf");

Eliminar todos los marcadores en un archivo PDF usando C++

En lugar de eliminar los marcadores de uno en uno, puede eliminar todos los marcadores a la vez mediante el método PdfBookmarkEditor->DeleteBookmarks(). Los siguientes son los pasos para eliminar todos los marcadores en un archivo PDF.

El siguiente es el código de muestra para eliminar todos los marcadores en un archivo PDF.

// Crear una instancia de la clase PdfBookmarkEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// Cargue el documento PDF
editor->BindPdf(u"SourceDirectory\\BookmarkSample.pdf");

// Eliminar todos los marcadores
editor->DeleteBookmarks();

// Guardar el documento PDF
editor->Save(u"OutputDirectory\\DeleteAllBookmarks_out.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 trabajar con marcadores en archivos PDF utilizando C++. Específicamente, ha aprendido a agregar, leer, modificar y eliminar marcadores en un archivo PDF. Además, ha visto cómo agregar marcadores anidados utilizando Aspose.PDF for C++. La API proporciona muchas funciones adicionales para trabajar con archivos PDF que puede explorar en detalle utilizando la documentación oficial. Si tiene alguna pregunta, no dude en contactarnos en el foro de soporte gratuito.

Ver también