概述
在PDF中,书签作为一种导航的有效工具,能帮助我们快速地定位到文档中的指定段落。同时,书签也能让读者对文档结构一目了然,在某种程度上也可作为目录使用。下面的示例中将介绍通过C#编程来操作PDF书签的方法。示例要点包括以下内容:
插入书签到PDF
编辑已有的PDF书签
删除PDF书签
读取PDF书签
设置书签折叠/展开
工具
注:下载安装该类库后,在程序中注意添加引用Bin文件夹下的Spire.Pdf.dll到程序(如下图),
示例代码(供参考)
【示例1】插入书签到PDF
using System; using Spire.Pdf; using System.Drawing; using Spire.Pdf.Bookmarks; using Spire.Pdf.General; namespace AddBookmark1_PDF { class Program { static void Main(string[] args) { //实例化PdfDocument类,加载测试文档 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf"); //遍历PDF文档所有页 for (int i = 0; i < pdf.Pages.Count; i++) { //添加书签到页面指定位置 PdfBookmark bookmark = pdf.Bookmarks.Add(string.Format("Chaper{0}", i + 1)); bookmark.Destination = new PdfDestination(pdf.Pages[i]); bookmark.Destination.Location = new PointF(0, 2); //设置书签字体粗细、颜色 bookmark.DisplayStyle = PdfTextStyle.Bold; bookmark.Color = Color.Black; } //保存并打开文档 pdf.SaveToFile("Bookmark1.pdf"); System.Diagnostics.Process.Start("Bookmark1.pdf"); } } }
书签添加效果:
【示例2】编辑已有的PDF书签
using System; using Spire.Pdf; using Spire.Pdf.Bookmarks; using Spire.Pdf.General; using System.Drawing; namespace ModifyBookmark_PDF { class Program { static void Main(string[] args) { //初始化PdfDocument类,加载测试文档 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\Bookmark.pdf"); //获取第一个书签 PdfBookmarkCollection bookmarks = pdf.Bookmarks; PdfBookmark childbookmark = bookmarks[0]; //修改指定页中的书签,包括书签字体粗细、颜色、书签文本等 childbookmark.Destination = new PdfDestination(pdf.Pages[1]); childbookmark.DisplayStyle = PdfTextStyle.Bold; childbookmark.Color = Color.Brown; childbookmark.Title = "CHAPER Ⅰ"; //保存文档并打开 pdf.SaveToFile("ModifyBookmark.pdf"); System.Diagnostics.Process.Start("ModifyBookmark.pdf"); } } }
【示例3】删除PDF书签
using System; using Spire.Pdf; using Spire.Pdf.Bookmarks; namespace RemoveBookmark_PDF { class Program { static void Main(string[] args) { //加载文件 PdfDocument pdf = new PdfDocument(); pdf.LoadFromFile(@"C:\Users\Administrator\Desktop\Bookmark1.pdf"); //删除指定书签 PdfBookmarkCollection bookmarks = pdf.Bookmarks; bookmarks.RemoveAt(0); //保存并打开文档 pdf.SaveToFile("RemoveBookmark.pdf"); System.Diagnostics.Process.Start("RemoveBookmark.pdf"); } } }
【示例4】读取PDF书签
using Spire.Pdf; using Spire.Pdf.Bookmarks; using System; using System.IO; using System.Text; namespace ReadBookmark_PDF { class Program { static void Main(string[] args) { //实例化PdfDocument类的对象,并加载含有多级书签的PDF文件 PdfDocument doc = new PdfDocument(); doc.LoadFromFile("test.pdf"); //获取文档的书签 PdfBookmarkCollection bookmarks = doc.Bookmarks; //声明一个可变字符串 StringBuilder stringbuilder = new StringBuilder(); //获取父书签和子书签 GetBookmarkTitle(bookmarks, stringbuilder); //声明txt文件,并将获得的多级书签写入到文件.txt String fileName = "output.txt"; File.WriteAllText(fileName, stringbuilder.ToString()); } //自定义方法获取书签 static void GetBookmarkTitle(PdfBookmarkCollection bookmarks, StringBuilder stringbuilder) { //遍历书签 if (bookmarks.Count > 0) { foreach (PdfBookmark parentBookmark in bookmarks) { stringbuilder.AppendLine(parentBookmark.Title); //获取书签 GetBookmarkTitle(parentBookmark, stringbuilder); } } } } }
读取结果:
【示例5】设置书签折叠、展开
using Spire.Pdf; namespace ExpandOrCollapseBookmark_PDF { class Program { static void Main(string[] args) { //实例化PdfDocument类的对象,并加载PDF测试文档 PdfDocument doc = new PdfDocument(); doc.LoadFromFile("Bookmark.pdf"); //设置书签折叠/展开 doc.ViewerPreferences.BookMarkExpandOrCollapse = false; //doc.ViewerPreferences.BookMarkExpandOrCollapse = true; //保存文档并打开 doc.SaveToFile("result.pdf"); System.Diagnostics.Process.Start("result.pdf"); } } }
以上是本次关于C#操作PDF书签的全部内容。
(本文完)