如何添加 PDF 书签和大纲

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

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



适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

适用于PDF的C# NuGet库

安装使用 NuGet

Install-Package IronPdf
Java PDF JAR

下载 DLL

下载DLL

手动安装到你的项目中

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

第一步:
green arrow pointer

查看 IronPDFNuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。

适用于PDF的C# NuGet库 nuget.org/packages/IronPdf/
Install-Package IronPdf

考虑安装 IronPDF DLL 直接。下载并手动安装到您的项目或GAC表单中: IronPdf.zip

手动安装到你的项目中

下载DLL

添加大纲和书签示例

在 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)添加子书签到 "Examination "书签。下面的代码演示了这一概念:

: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 时创建内容表:"如何添加目录."

查克尼特·宾

软件工程师

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