Skip to content

页面标签

PDF 页面标签(Page Labels)允许为文档中的页面指定自定义编号样式和前缀,使其在 PDF 阅读器中显示的页码不同于物理页面索引。例如前言部分使用罗马数字(i, ii, iii),正文部分使用阿拉伯数字(1, 2, 3)。

福昕 PDF SDK 安卓版通过 Core SDKPageLabels 类提供页面标签的读取、设置和删除功能。

核心类

说明
PageLabels页面标签管理器,从 PDFDoc 创建

编号样式常量

常量说明示例
e_None0无编号(仅显示前缀)
e_DecimalNums1阿拉伯数字1, 2, 3
e_UpperRomanNums2大写罗马数字I, II, III
e_LowerRomanNums3小写罗马数字i, ii, iii
e_UpperLetters4大写字母A, B, C
e_LowerLetters5小写字母a, b, c

设置页面标签

java
PageLabels labels = new PageLabels(doc);

// 为第 0 页起设置:小写罗马数字,从 1 开始,前缀为空
labels.setPageLabel(0, PageLabels.e_LowerRomanNums, 1, "");

// 为第 4 页起设置:阿拉伯数字,从 1 开始,前缀为空
labels.setPageLabel(4, PageLabels.e_DecimalNums, 1, "");

// 为第 10 页起设置:大写字母,从 1 开始,前缀 "附录-"
labels.setPageLabel(10, PageLabels.e_UpperLetters, 1, "附录-");

setPageLabel() 参数说明:

参数类型说明
page_indexint标签段的起始页面索引(0-based)
label_styleint编号样式(见上方常量表)
first_label_numberint该段起始编号值
prefix_stringString标签前缀

获取页面标签信息

java
PageLabels labels = new PageLabels(doc);

// 获取指定页面的完整标签标题(如 "附录-A")
String title = labels.getPageLabelTitle(10);

// 检查指定页面是否设置了标签
boolean hasLabel = labels.hasPageLabel(0);

// 获取编号样式
int style = labels.getPageLabelStyle(0);

// 获取前缀
String prefix = labels.getPageLabelPrefix(10);

// 获取起始编号
int startNum = labels.getPageLabelStart(0);

删除页面标签

java
PageLabels labels = new PageLabels(doc);

// 删除指定页面的标签定义
labels.removePageLabel(0);

// 删除所有页面标签
labels.removeAll();

启用页面标签自动更新

当文档页面发生增删操作时,可通过 PDFDoc.enableUpdatePageLabel() 控制是否自动更新标签的页面索引:

java
doc.enableUpdatePageLabel(true);

完整示例

java
PDFDoc doc = new PDFDoc(filePath);
doc.load(null);

PageLabels labels = new PageLabels(doc);

// 前言:前 3 页使用小写罗马数字
labels.setPageLabel(0, PageLabels.e_LowerRomanNums, 1, "");

// 正文:第 4 页起使用阿拉伯数字
labels.setPageLabel(3, PageLabels.e_DecimalNums, 1, "");

// 附录:第 20 页起使用大写字母,前缀 "附录-"
labels.setPageLabel(19, PageLabels.e_UpperLetters, 1, "附录-");

doc.saveAs(outputPath, PDFDoc.e_SaveFlagNormal);

// 验证
for (int i = 0; i < doc.getPageCount(); i++) {
    String title = labels.getPageLabelTitle(i);
    Log.d("PageLabel", "Page " + i + " -> " + title);
}

API 参考

PageLabels 的完整接口说明请参阅 API 手册