如何添加 PDF 书签和大纲

This article was translated from English: Does it need improvement?
Translated
View the article in English

在 C# 项目中加入 PDF 大纲(也称为书签)可以大大提高可用性和用户体验设计。 PDF大纲充当导航工具,使用户可以轻松访问文档中的关键页面,类似于目录。 通过整合PDF大纲,您可以为您的文档提供更直观、更用户友好的体验。

开始使用IronPDF

立即在您的项目中开始使用IronPDF,并享受免费试用。

第一步:
green arrow pointer




添加大纲和书签示例

在Adobe Acrobat Reader中,大纲(书签)显示在左侧边栏中,提供了一种方便的方式跳转到文档的关键部分。

使用IronPDF,您可以导入PDF文档并对现有大纲执行各种操作,如添加、重新排序、编辑属性和删除书签。 这使您可以完全控制PDF文件的组织和结构。

提示
所有页面的索引均采用零基索引。

添加单层书签

在IronPDF中添加书签是一个简单的过程。 您可以使用 AddBookmarkAtEnd 方法,需要指定书签名称和相应的页面索引。

:path=/static-assets/pdf/content-code-examples/how-to/bookmarks-single-layer-bookmark.cs
using IronPdf;

// Create a new PDF or edit an existing document.
PdfDocument pdf = PdfDocument.FromFile("existing.pdf");

// Add a bookmark
pdf.Bookmarks.AddBookMarkAtEnd("NameOfBookmark", 0);

// Add a sub-bookmark
pdf.Bookmarks.AddBookMarkAtEnd("NameOfSubBookmark", 1);

pdf.SaveAs("singleLayerBookmarks.pdf");
Imports IronPdf

' Create a new PDF or edit an existing document.
Private pdf As PdfDocument = PdfDocument.FromFile("existing.pdf")

' Add a bookmark
pdf.Bookmarks.AddBookMarkAtEnd("NameOfBookmark", 0)

' Add a sub-bookmark
pdf.Bookmarks.AddBookMarkAtEnd("NameOfSubBookmark", 1)

pdf.SaveAs("singleLayerBookmarks.pdf")
VB   C#

单层书签文档

添加多层书签

使用IronPDF,您可以在树状结构中添加书签,这对于保持大型PDF文档的可导航性特别有用。 此功能在处理来自不同日期和地点的大量考试试卷、销售报告或收据记录的单个PDF文档时非常方便。

AddBookMarkAtEnd 方法返回一个 IPdfBookMark 对象,允许您添加子书签。 例如,您可以使用 Children.AddBookMarkAtStart("Date1", 0)或Children.AddBookMarkAtEnd("Date1", 0)将子书签添加到“考试”书签中。 以下代码演示了这个概念:

:path=/static-assets/pdf/content-code-examples/how-to/bookmarks-multi-layer-bookmark.cs
using IronPdf;

// Load existing PDF document
PdfDocument pdf = PdfDocument.FromFile("examinationPaper.pdf");

// Assign IPdfBookMark object to a variable
var mainBookmark = pdf.Bookmarks.AddBookMarkAtEnd("Examination", 0);

// Add bookmark for days
var date1Bookmark = mainBookmark.Children.AddBookMarkAtStart("Date1", 1);

// Add bookmark for type of test
var paperBookmark = date1Bookmark.Children.AddBookMarkAtStart("Paper", 1);
paperBookmark.Children.AddBookMarkAtEnd("PersonA", 3);
paperBookmark.Children.AddBookMarkAtEnd("PersonB", 4);

// Add bookmark for days
var date2Bookmark = mainBookmark.Children.AddBookMarkAtEnd("Date2", 5);

// Add bookmark for type of test
var computerBookmark = date2Bookmark.Children.AddBookMarkAtStart("Computer", 5);
computerBookmark.Children.AddBookMarkAtEnd("PersonC", 6);
computerBookmark.Children.AddBookMarkAtEnd("PersonD", 7);

pdf.SaveAs("multiLayerBookmarks.pdf");
Imports IronPdf

' Load existing PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("examinationPaper.pdf")

' Assign IPdfBookMark object to a variable
Private mainBookmark = pdf.Bookmarks.AddBookMarkAtEnd("Examination", 0)

' Add bookmark for days
Private date1Bookmark = mainBookmark.Children.AddBookMarkAtStart("Date1", 1)

' Add bookmark for type of test
Private paperBookmark = date1Bookmark.Children.AddBookMarkAtStart("Paper", 1)
paperBookmark.Children.AddBookMarkAtEnd("PersonA", 3)
paperBookmark.Children.AddBookMarkAtEnd("PersonB", 4)

' Add bookmark for days
Dim date2Bookmark = mainBookmark.Children.AddBookMarkAtEnd("Date2", 5)

' Add bookmark for type of test
Dim computerBookmark = date2Bookmark.Children.AddBookMarkAtStart("Computer", 5)
computerBookmark.Children.AddBookMarkAtEnd("PersonC", 6)
computerBookmark.Children.AddBookMarkAtEnd("PersonD", 7)

pdf.SaveAs("multiLayerBookmarks.pdf")
VB   C#

多层书签文档

检索书签列表

使用IronPDF,您可以轻松检索和查看PDF文档中的书签。 浏览书签树非常直观,并且可以无缝访问不同的部分。 让我们考虑一下 多层书签文档示例 以上。

“Examination”书签将具有一个Children属性,该属性指向“Date1”和“Date2”书签。 “Date1”书签的NextBookmark属性指向“Date2”书签。 此外,“Date1”书签具有一个包含“Paper”书签的Children属性。

要检索打开的 PDF 文档中存在的所有书签,您可以使用 GetAllBookmarks 方法。 这将为您提供所有书签的全面列表,让您进一步分析和利用书签结构。

:path=/static-assets/pdf/content-code-examples/how-to/bookmarks-retrieve-bookmark.cs
using IronPdf;

// Load existing PDF document
PdfDocument pdf = PdfDocument.FromFile("multiLayerBookmarks.pdf");

// Retrieve bookmarks list
var mainBookmark = pdf.Bookmarks.GetAllBookmarks();
Imports IronPdf

' Load existing PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("multiLayerBookmarks.pdf")

' Retrieve bookmarks list
Private mainBookmark = pdf.Bookmarks.GetAllBookmarks()
VB   C#

请注意
合并两个具有相同名称书签的 PDF 文档会导致书签列表中断。

在继续之前
仅支持通过页面索引创建的书签。 从 PDF 文档中的其他部分或元素制作的书签,其页面索引值将设置为 -1

在以下文章中了解如何在从 HTML 生成 PDF 时创建目录:"使用 IronPDF 创建目录."

Chaknith related to 检索书签列表

查克尼特·宾

软件工程师

Chaknith 是开发者中的福尔摩斯。他第一次意识到自己可能在软件工程方面有前途,是在他出于乐趣做代码挑战的时候。他的重点是 IronXL 和 IronBarcode,但他为能帮助客户解决每一款产品的问题而感到自豪。Chaknith 利用他从直接与客户交谈中获得的知识,帮助进一步改进产品。他的轶事反馈不仅仅局限于 Jira 票据,还支持产品开发、文档编写和市场营销,从而提升客户的整体体验。当他不在办公室时,他可能会在学习机器学习、编程或徒步旅行。