本页内容
大纲
大纲是 PDF 文档的结构化导航工具,通常显示在文档阅读器的侧边栏或面板上,它通常基于文档中的标题和章节信息自动生成,也可以手动编辑和调整。大纲提供了文档的层次结构,使用户能够更容易地定位和浏览内容,同时可以使用大纲快速导航到文档的不同部分。
展示大纲
PDF 文档每个标题或子标题在大纲树中都是一个节点,节点之间通过分支连接。主标题作为根节点,而子标题则作为根节点的分支,形成了一个树状的结构。
大纲由节点和子节点递归嵌套而成,以层次结构的方式展示文档的组织框架。节点通常表示主要部分,而子节点表示次要部分或章节。
以下是通过递归方式展示 PDF 大纲的示例代码:
java
public ArrayList<CPDFOutline> childOutline() {
ArrayList<CPDFOutline> outlineList = new ArrayList<>();
CPDFOutline pdfOutlineRoot = document.getOutlineRoot();
if (pdfOutlineRoot == null){
return outlineList;
}
CPDFOutline[] outlines = pdfOutlineRoot.getChildList();
int numberOfOutline = outlines.length;
for (int i = 0; i < numberOfOutline; i++) {
outlineList.add(outlines[i]);
}
return outlineList;
}
kotlin
fun childOutline(): MutableList<CPDFOutline> {
val pdfOutlineRoot: CPDFOutline = document.getOutlineRoot() ?: return mutableListOf()
return if (pdfOutlineRoot.childList.isNotEmpty()) {
pdfOutlineRoot.childList.toMutableList();
} else {
mutableListOf()
}
}
新增大纲
以下是新增大纲的步骤:
- 找到需要新增大纲位置的父大纲
- 创建需要新增的大纲
- 添加大纲动作,例如跳转到页面
- 设置属性
以下是新增大纲的示例代码:
java
// 找到需要新增大纲位置的父大纲
CPDFOutline pdfOutlineRoot = document.getOutlineRoot();
if (pdfOutlineRoot == null){
return;
}
CPDFOutline insertOutline = pdfOutlineRoot.insertChildAtIndex(0);
// 设置属性
insertOutline.setTitle("New outline");
// 添加大纲行为,此处为跳转到第一页
int pageIndex = 0;
CPDFDestination destination = new CPDFDestination(pageIndex, 0F, 0, 1F);
insertOutline.setDestination(destination);
kotlin
// 找到需要新增大纲位置的父大纲
val pdfOutlineRoot: CPDFOutline = document.outlineRoot ?: return
pdfOutlineRoot.insertChildAtIndex(0).apply {
// 设置属性
title = "insert0"
// 添加大纲行为,此处为跳转到第一页
destination = CPDFDestination(0, 0F, 0F, 1F)
}
调整大纲顺序
调整大纲顺序,使用函数 CPDFOutline.insertChildAtIndex(index)
. 在大纲层次结构中移动项目时,您应该保留该项目并首先调用 CPDFOutline.removeFromParent()
.
删除大纲
删除目标大纲,删除大纲后目标大纲的子大纲也将一并删除。
以下是删除大纲的示例代码:
java
CPDFOutline.removeFormParent();