本页内容
大纲
大纲是 PDF 文档的结构化导航工具,通常显示在文档阅读器的侧边栏或面板上,它通常基于文档中的标题和章节信息自动生成,也可以手动编辑和调整。大纲提供了文档的层次结构,使用户能够更容易地定位和浏览内容,同时可以使用大纲快速导航到文档的不同部分。
展示大纲
PDF 文档每个标题或子标题在大纲树中都是一个节点,节点之间通过分支连接。主标题作为根节点,而子标题则作为根节点的分支,形成了一个树状的结构。
大纲由节点和子节点递归嵌套而成,以层次结构的方式展示文档的组织框架。节点通常表示主要部分,而子节点表示次要部分或章节。
以下是通过递归方式展示 PDF 大纲的示例代码:
C#
static private void TraverseOutline(List<CPDFOutline> outlineList)
{
foreach (var outline in outlineList)
{
// 打印缩进,每一层嵌套增加4个空格
for (var i = 0; i < outlineCounter; i++)
{
Console.Write(" ");
}
// 打印大纲标题
Console.Write("-> " + outline.Title + "\n");
// 增加大纲计数
outlineNumber++;
// 获取当前大纲的子大纲列表
var childList = outline.ChildList;
if (childList != null && childList.Count != 0)
{
// 如果有子大纲,增加缩进计数
outlineCounter++;
// 递归遍历子大纲
TraverseOutline(childList);
}
else
{
//当前层级遍历完成,回到上级大纲
if (outlineList.IndexOf(outline) + 1 == outlineList.Count)
{
// 如果当前大纲是当前层级的最后一个,减少缩进计数
outlineCounter--;
}
}
}
}
新增大纲
以下是新增大纲的步骤:
- 找到需要新增大纲位置的父大纲
- 创建需要新增的大纲
- 添加大纲动作,例如跳转到页面
- 设置属性
以下是新增大纲的示例代码:
C#
// 找到需要新增大纲位置的父大纲
CPDFOutline outline = document.GetOutlineRoot();
// 创建需要新增的大纲
CPDFOutline childOutline = null;
outline.InsertChildAtIndex(document, 0, ref childOutline);
// 添加大纲行为,此处为跳转到第一页
CPDFGoToAction gotoAction = new CPDFGoToAction();
CPDFDestination dest = new CPDFDestination();
dest.PageIndex = 0;
gotoAction.SetDestination(document, dest);
childOutline.SetAction(gotoAction);
// 设置属性
childOutline.SetTitle("New outline");
调整大纲顺序
将某一大纲移动为目标大纲的子大纲。
以下是移动大纲的步骤:
- 获取目标大纲的大纲对象
- 指定标大纲下的子大纲位置序号,将需要移动的大纲移动到对应位置。
以下是移动大纲的示例代码:
C#
// 获取目标大纲的大纲对象
CPDFOutline targetOutline = document.GetOutlineList()[1];
// 指定需要移动到的子大纲序号,将需要移动的大纲移动到指定位置。
targetOutline.MoveChildAtIndex(document, outline, targetOutline.ChildList.Count);
删除大纲
删除目标大纲,删除大纲后目标大纲的子大纲也将一并删除。
以下是删除大纲的示例代码:
C#
CPDFOutline outline = document.GetOutlineList()[0];
outline.RemoveFromParent(document);