页面标签
PDF 页面标签(Page Labels)允许为文档中的页面指定自定义编号样式和前缀,使其在 PDF 阅读器中显示的页码不同于物理页面索引。例如前言部分使用罗马数字(i, ii, iii),正文部分使用阿拉伯数字(1, 2, 3)。
福昕 PDF SDK 安卓版通过 Core SDK 的 PageLabels 类提供页面标签的读取、设置和删除功能。
核心类
| 类 | 说明 |
|---|---|
PageLabels | 页面标签管理器,从 PDFDoc 创建 |
编号样式常量
| 常量 | 值 | 说明 | 示例 |
|---|---|---|---|
e_None | 0 | 无编号(仅显示前缀) | — |
e_DecimalNums | 1 | 阿拉伯数字 | 1, 2, 3 |
e_UpperRomanNums | 2 | 大写罗马数字 | I, II, III |
e_LowerRomanNums | 3 | 小写罗马数字 | i, ii, iii |
e_UpperLetters | 4 | 大写字母 | A, B, C |
e_LowerLetters | 5 | 小写字母 | 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_index | int | 标签段的起始页面索引(0-based) |
label_style | int | 编号样式(见上方常量表) |
first_label_number | int | 该段起始编号值 |
prefix_string | String | 标签前缀 |
获取页面标签信息
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 手册。