有时候我们在阅读PDF文档时会遇到这样一种情况:PDF文档页数比较多,但是又没有书签,所以我们不能根据书签快速了解文档所讲解的内容,也不能点击书签快速跳转到相应的位置,而只能一页一页的翻阅,非常苦恼。相信开发人员在开发和PDF有关的应用程序时,也会有这样的功能需求,因此在这篇文章中我就介绍一下如何使用编程的方式(C#)和Spire.PDF组件给PDF文档添加书签(包括添加书签到现有文档和添加子书签),以及修改和删除现有PDF文档中的指定书签。

Spire.PDF组件概述
Spire.PDF是一个专业的PDF组件,用于在.NET应用程序中创建,编辑,处理和阅读PDF文档。支持丰富的PDF文档处理操作,如PDF文档合并/拆分、转换(如HTML转PDF,PDF转图片等)、打印(包括静默打印)、压缩、添加/修改/删除书签、添加注释、安全设置(包括数字签名)、创建与填充域、图片插入与提取、文本提取与高亮等。它不依赖Adobe Acrobat,因此运行环境无需安装Adobe Reader或其他类似组件。 该组件分为商业版和免费版(不是试用版)两种,一般个人使用或者操作的PDF文档不超过10页时,可以使用免费版。
关于它的安装,有很多种渠道,包括官网以及开发者最喜欢和常用的NuGet方式。在Visual Studio的 NuGet Package Manager Console中输入以下PowerShell命令回车,组件的dll就会自动地引用到项目中:
PM> Install-Package Spire.PDF
添加、修改和删除PDF书签的实现
一、添加书签
1.1 添加书签
在Spire.PDF中,每个PDF文档都有一个书签列表(PdfBookmarkCollection)。我们可以通过PdfDocument对象的Bookmarks属性来获取该列表,然后通过Add () 方法将书签添加到列表中。
//新建PDF文档
PdfDocument pdf = new PdfDocument();
//添加页面
PdfPageBase page = pdf.Pages.Add();
//添加书签
PdfBookmark bookmark = pdf.Bookmarks.Add("第一页");
//设置书签所指向的页面和位置,(0,0)表示页面的开始位置
bookmark.Destination = new PdfDestination(page);
bookmark.Destination.Location = new PointF(0, 0);
//设置书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold;
bookmark.Color = Color.Black;
//保存文档
pdf.SaveToFile("Bookmark2.pdf");
1.2 添加子书签
添加子书签和添加普通书签的方式基本一样,不同的是普通书签是直接添加到文档的书签列表里,而子书签则是添加到父书签的列表里。
//新建PDF文档
PdfDocument pdf = new PdfDocument();
//添加页面
PdfPageBase page = pdf.Pages.Add();
//添加书签
PdfBookmark bookmark = pdf.Bookmarks.Add("第一章 热传导");
//设置书签指向的页面和位置
bookmark.Destination = new PdfDestination(page);
bookmark.Destination.Location = new PointF(0, 0);
//设置书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold;
bookmark.Color = Color.SeaGreen;
//添加子书签
PdfBookmark childBookmark = bookmark.Insert(0, "1.1 热传导基本知识");
//设置子书签指向的页面和位置
childBookmark.Destination = new PdfDestination(page);
childBookmark.Destination.Location = new PointF(400, 300);
//设置子书签的文本格式和颜色
childBookmark.DisplayStyle = PdfTextStyle.Regular;
childBookmark.Color = Color.Black;
//保存文档
pdf.SaveToFile("ChildBookmark.pdf");
1.3 添加书签到现有文档
除了在新建的PDF文档里添加书签,我们还可以给现有的PDF文档添加书签。加载PDF文档的方法除LoadFromFile以外,还有LoadFromStream (从流加载),LoadFromHTML(从HTML加载)等,可根据自己的需求选择相应的加载方式。
//加载文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("示例.pdf");
for (int i = 0; i < pdf.Pages.Count; i++)
{
//添加书签
PdfBookmark bookmark = pdf.Bookmarks.Add(string.Format("第{0}章", i+1));
//设置书签指向的页面和位置
bookmark.Destination = new PdfDestination(pdf.Pages[i]);
bookmark.Destination.Location = new PointF(0, 0);
//设置书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold;
bookmark.Color = Color.Black;
}
//保存文档
pdf.SaveToFile("Bookmark2.pdf");
2. 修改书签
Spire.PDF支持多种书签修改方式,例如修改现有书签的内容,插入新书签到现有书签列表,插入子书签到现有书签等。这里我选取修改书签内容和插入新书签到现有书签列表进行介绍。
2.1 修改现有书签内容
//加载文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Bookmark2.pdf");
//获取书签列表
PdfBookmarkCollection bookmarks = pdf.Bookmarks;
//获取第一个书签
PdfBookmark bookmark = bookmarks[0];
//修改书签指向的页面
bookmark.Destination = new PdfDestination(document.Pages[1]);
//修改书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold;
bookmark.Color = Color.Green;
//修改书签的title
bookmark.Title = "修改";
//保存文档
pdf.SaveToFile("ModifyBookmark.pdf");
2.2 插入新书签到现有书签列表
//加载文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Bookmark2.pdf");
//插入新书签到指定位置(此处插入的是第三个书签的位置)
PdfBookmark bookmark = pdf.Bookmarks.Insert(2, "新增第三章");
//设置书签所指向的页面和位置
bookmark.Destination = new PdfDestination(document.Pages[1]);
bookmark.Destination.Location = new PointF(0, 300);
//保存文档
pdf.SaveToFile("InsertBookmark.pdf");
3. 删除书签
删除书签时,可以使用书签的序号,也可以使用书签的名称。这里我使用的是序号的方式。
//加载文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Bookmark2.pdf");
//获取书签列表
PdfBookmarkCollection bookmarks = document.Bookmarks;
//删除第一个书签
bookmarks.RemoveAt(0);
//保存文档
pdf.SaveToFile("DeleteBookmark.pdf");
以上博主只总结了部分操作PDF书签的功能,如果需要详细了解其他的功能,请查阅:http://e-iceblue.cn/Introduce/Spire-PDF-NET.html.希望对大家的学习有所帮助,也希望大家多多支持。
# C#
# pdf添加书签
# pdf修改书签
# 删除PDF书签
# C#打印PDF文档的10种方法(小结)
# C#实现合并及拆分PDF文件的方法
# C#合并多种格式文件为PDF的方法
# C# 在PDF文档中创建表格的实现方法
# C#添加、获取、删除PDF附件实例代码
# 文档
# 加载
# 的是
# 可以使用
# 第一个
# 试用版
# 应用程序
# 自己的
# 是一个
# 我就
# 就会
# 都有
# 运行环境
# 会有
# 还可以
# 在这
# 则是
# 两种
# 其他的
# 我们可以
相关文章:
如何在建站宝盒中设置产品搜索功能?
深圳网站制作培训,深圳哪些招聘网站比较好?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
微信h5制作网站有哪些,免费微信H5页面制作工具?
如何快速生成橙子建站落地页链接?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
教学网站制作软件,学习*后期制作的网站有哪些?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
,柠檬视频怎样兑换vip?
网站制作报价单模板图片,小松挖机官方网站报价?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
如何高效完成自助建站业务培训?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
C#如何使用XPathNavigator高效查询XML
Bpmn 2.0的XML文件怎么画流程图
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
设计网站制作公司有哪些,制作网页教程?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
如何将凡科建站内容保存为本地文件?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
Python如何创建带属性的XML节点
如何快速打造个性化非模板自助建站?
如何在七牛云存储上搭建网站并设置自定义域名?
建站之星展会模板:智能建站与自助搭建高效解决方案
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
如何彻底卸载建站之星软件?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
如何通过VPS建站实现广告与增值服务盈利?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
建站之星伪静态规则如何设置?
建站之星安装提示数据库无法连接如何解决?
Swift开发中switch语句值绑定模式
如何在景安服务器上快速搭建个人网站?
实例解析angularjs的filter过滤器
如何用景安虚拟主机手机版绑定域名建站?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
如何在IIS7上新建站点并设置安全权限?
,怎么在广州志愿者网站注册?
建站之星安装模板失败:服务器环境不兼容?
XML的“混合内容”是什么 怎么用DTD或XSD定义
网站制作公司排行榜,抖音怎样做个人官方网站
如何用AWS免费套餐快速搭建高效网站?
盘锦网站制作公司,盘锦大洼有多少5G网站?
建站主机选择指南:服务器配置与SEO优化实战技巧
北京网站制作网页,网站升级改版需要多久?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
,有什么在线背英语单词效率比较高的网站?
如何在万网自助建站中设置域名及备案?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
*请认真填写需求信息,我们会在24小时内与您取得联系。