PDF 文件中的书签有助于标记文档中的兴趣点。这些使您能够快速跳转到文档中的特定点。您可能会遇到需要以编程方式在 PDF 文件中添加、读取、修改或删除书签的情况。为此,本文将教您如何使用 C++ 处理 PDF 文件中的书签。
- 用于处理 PDF 文件中书签的 C++ API
- 使用 C++ 在 PDF 文件中添加书签
- 在 PDF 文件中添加嵌套书签
- 使用 C++ 从 PDF 文件中读取书签
- 使用 C++ 修改书签标题
- 使用 C++ 删除特定书签
- 使用 C++ 删除 PDF 文件中的所有书签
- 获得免费许可证
用于处理 PDF 文件中书签的 C++ API
Aspose.PDF for C++ 是一个 C++ 库,允许您创建、阅读和更新 PDF 文档。此外,API 支持在 PDF 文件中添加、读取、修改和删除书签。您可以通过 NuGet 安装 API,也可以直接从 下载 部分下载。
PM> Install-Package Aspose.PDF.Cpp
使用 C++ 在 PDF 文件中添加书签
以下是在 PDF 文件中添加书签的步骤。
- 首先,创建一个 PdfBookmarkEditor 类的实例。
- 使用 PdfBookmarkEditor->BindPdf(System::SharedPtr) 加载 PDF 文档Aspose::Pdf::DocumentsrcDoc) 方法。
- 使用 PdfBookmarkEditor->CreateBookmarkOfPage(System::String bookmarkName, int32t pageNumber) 方法创建书签。
- 使用 PdfBookmarkEditor->Save(System::String destFile) 方法保存 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 添加嵌套书签。以下是添加嵌套书签的步骤。
- 创建 PdfBookmarkEditor 类的实例。
- 使用 PdfBookmarkEditor->BindPdf(System::SharedPtr) 加载 PDF 文档Aspose::Pdf::DocumentsrcDoc) 方法。
- 使用 Bookmark 类创建书签。
- 将子书签添加到 Bookmarks 类的实例,并使用 bookmark->setChildItems(System::SharedPtr) 将其设置为父书签的子书签值) 方法。
- 使用 PdfBookmarkEditor->CreateBookmarks(System::SharedPtr) 将书签添加到 PDF 文档书签) 方法。
- 最后,使用 PdfBookmarkEditor->Save(System::String destFile) 方法保存 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");
// 创建第一个子书签
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 文件中读取书签的步骤。
- 创建 PdfBookmarkEditor 类的实例。
- 使用 PdfBookmarkEditor->BindPdf(System::SharedPtr) 加载 PDF 文档Aspose::Pdf::DocumentsrcDoc) 方法。
- 使用 PdfBookmarkEditor->ExtractBookmarks() 方法检索所有书签。
- 遍历书签以检索单个书签。
- 阅读书签的属性。
以下示例代码展示了如何使用 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 文件中现有书签的标题的步骤。
- 创建 PdfBookmarkEditor 类的实例。
- 使用 PdfBookmarkEditor->BindPdf(System::SharedPtr) 加载 PDF 文档Aspose::Pdf::DocumentsrcDoc) 方法。
- 使用 PdfBookmarkEditor->ModifyBookmarks(System::String sTitle, System::String dTitle) 方法修改书签的标题。
- 使用 PdfBookmarkEditor->Save(System::String destFile) 方法保存 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 文件中删除特定书签。以下是删除特定书签的步骤。
- 创建 PdfBookmarkEditor 类的实例。
- 使用 PdfBookmarkEditor->BindPdf(System::SharedPtr) 加载 PDF 文档Aspose::Pdf::DocumentsrcDoc) 方法。
- 使用 PdfBookmarkEditor->DeleteBookmarks(System::String title) 方法删除所需的书签。
- 使用 PdfBookmarkEditor->Save(System::String destFile) 方法保存 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 文件中所有书签的步骤。
- 创建 PdfBookmarkEditor 类的实例。
- 使用 PdfBookmarkEditor->BindPdf(System::SharedPtr) 加载 PDF 文档Aspose::Pdf::DocumentsrcDoc) 方法。
- 使用 PdfBookmarkEditor->DeleteBookmarks() 方法删除所有书签。
- 使用 PdfBookmarkEditor->Save(System::String destFile) 方法保存 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 文件的附加功能,您可以使用 官方文档 详细了解这些功能。如果您有任何问题,请随时在 免费支持论坛 上与我们联系。