PDF 文件中的书签有助于标记文档中的兴趣点。这些使您能够快速跳转到文档中的特定点。您可能会遇到需要以编程方式在 PDF 文件中添加、读取、修改或删除书签的情况。为此,本文将教您如何使用 C++ 处理 PDF 文件中的书签。

用于处理 PDF 文件中书签的 C++ API

Aspose.PDF for C++ 是一个 C++ 库,允许您创建、阅读和更新 PDF 文档。此外,API 支持在 PDF 文件中添加、读取、修改和删除书签。您可以通过 NuGet 安装 API,也可以直接从 下载 部分下载。

PM> Install-Package Aspose.PDF.Cpp

使用 C++ 在 PDF 文件中添加书签

以下是在 PDF 文件中添加书签的步骤。

以下示例代码演示了如何使用 C++ 在 PDF 文件中添加书签。

// 创建 PdfBookmarkEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// 加载 PDF 文档
editor->BindPdf(u"SourceDirectory\\Sample 1.pdf");

// 创建书签
editor->CreateBookmarkOfPage(u"Bookmark for page 1", 1);

// 保存 PDF 文档
editor->Save(u"OutputDirectory\\AddBookmark_out.pdf");
示例代码生成的输出

示例代码生成的输出

在 PDF 文件中添加嵌套书签

您还可以使用 Aspose.PDF for C++ API 添加嵌套书签。以下是添加嵌套书签的步骤。

以下示例代码展示了如何使用 C++ 在 PDF 文件中添加嵌套书签。

// 创建 PdfBookmarkEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// 加载 PDF 文档
editor->BindPdf(u"SourceDirectory\\Sample 1.pdf");

// 创建第一个子书签
System::SharedPtr<Aspose::Pdf::Facades::Bookmark> bm1 = System::MakeObject<Aspose::Pdf::Facades::Bookmark>();
bm1->set_PageNumber(1);
bm1->set_Title(u"First child");

// 创建第二个子书签
System::SharedPtr<Aspose::Pdf::Facades::Bookmark> bm2 = System::MakeObject<Aspose::Pdf::Facades::Bookmark>();
bm2->set_PageNumber(2);
bm2->set_Title(u"Second child");

// 创建父书签
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");

// 设置子书签
System::SharedPtr<Aspose::Pdf::Facades::Bookmarks> bms = System::MakeObject<Aspose::Pdf::Facades::Bookmarks>();
bms->Add(bm1);
bms->Add(bm2);
bm->set_ChildItem(bms);

// 将书签添加到 PDF 文件
editor->CreateBookmarks(bm);

// 保存 PDF 文档
editor->Save(u"OutputDirectory\\AddChildBookmark_out.pdf");
示例代码生成的输出

示例代码生成的输出

使用 C++ 从 PDF 文件中读取书签

为了阅读书签,使用 PdfBookmarkEditor->ExtractBookmarks() 方法。以下是从 PDF 文件中读取书签的步骤。

以下示例代码展示了如何使用 C++ 从 PDF 文件中读取书签。

// 创建 PdfBookmarkEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// 加载 PDF 文档
editor->BindPdf(u"SourceDirectory\\BookmarkSample.pdf");

// 检索所有书签
System::SharedPtr <Bookmarks> bms = editor->ExtractBookmarks();

// 循环浏览书签
for (System::SharedPtr<Bookmark> bm : bms) {
	
	// 显示书签的标题
	Console::WriteLine(bm->get_Title());

	// 显示书签的目的地
	Console::WriteLine(bm->get_Destination());
}

使用 C++ 修改书签标题

以下是修改 PDF 文件中现有书签的标题的步骤。

以下示例代码演示了如何修改 PDF 文件中现有书签的标题。

// 创建 PdfBookmarkEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// 加载 PDF 文档
editor->BindPdf(u"SourceDirectory\\BookmarkSample.pdf");

// 修改书签标题
editor->ModifyBookmarks(u"bookmark for page 1", u"Page 1 Bookmark");

// 保存 PDF 文档
editor->Save(u"OutputDirectory\\ModifyBookmark_out.pdf");

使用 C++ 删除特定书签

API 提供了 PdfBookmarkEditor->DeleteBookmarks(System::String title) 方法来从 PDF 文件中删除特定书签。以下是删除特定书签的步骤。

以下示例代码显示如何使用 C++ 删除特定书签。

// 创建 PdfBookmarkEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// 加载 PDF 文档
editor->BindPdf(u"SourceDirectory\\BookmarkSample.pdf");

// 删除特定书签
editor->DeleteBookmarks(u"bookmark for page 1");

// 保存 PDF 文档
editor->Save(u"OutputDirectory\\DeleteParticularBookmark_out.pdf");

使用 C++ 删除 PDF 文件中的所有书签

您可以使用 PdfBookmarkEditor->DeleteBookmarks() 方法一次删除所有书签,而不是一次删除一个书签。以下是删除 PDF 文件中所有书签的步骤。

以下是删除 PDF 文件中所有书签的示例代码。

// 创建 PdfBookmarkEditor 类的实例
System::SharedPtr<Aspose::Pdf::Facades::PdfBookmarkEditor> editor = System::MakeObject<Aspose::Pdf::Facades::PdfBookmarkEditor>();

// 加载 PDF 文档
editor->BindPdf(u"SourceDirectory\\BookmarkSample.pdf");

// 删除所有书签
editor->DeleteBookmarks();

// 保存 PDF 文档
editor->Save(u"OutputDirectory\\DeleteAllBookmarks_out.pdf");

获得免费许可证

您可以通过请求 免费的临时许可证 来试用该 API,而不受评估限制。

结论

在本文中,您学习了如何使用 C++ 处理 PDF 文件中的书签。具体来说,您已经学习了如何在 PDF 文件中添加、读取、修改和删除书签。此外,您还了解了如何使用 Aspose.PDF for C++ API 添加嵌套书签。 API 提供了许多用于处理 PDF 文件的附加功能,您可以使用 官方文档 详细了解这些功能。如果您有任何问题,请随时在 免费支持论坛 上与我们联系。

也可以看看