概述
在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书签的全部内容。
(本文完)