Appearance
PDF插件自定义书签相关接口参考
概述
本节介绍软航OFFICE文档控件PDF插件自定义书签相关接口,这些接口允许开发者在PDF文档中管理自定义书签,为PDF文档管理系统提供完整的书签控制能力。
注意: PDF插件提供了书签侧边栏来展现书签信息,详见ShowSidebar方法介绍。
书签信息属性
CustomBookmarksCount
说明:
数值型;只读;统计PDF文档用户自定义书签总数。
语法:
javascript
// 读取
varObj = plugInObj.CustomBookmarksCount;
使用示例:
javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;
// 获取自定义书签总数
var bookmarksCount = plugInObj.CustomBookmarksCount;
console.log("自定义书签总数:", bookmarksCount);
// 遍历所有书签
for (var i = 0; i < bookmarksCount; i++) {
var bookmarkName = plugInObj.CustomBookmarksName(i);
console.log("书签" + i + ":", bookmarkName);
}
CustomBookmarksName
说明:
数值型;只读;读取指定索引值的用户自定义书签名称。
语法:
javascript
// 读取
varObj = plugInObj.CustomBookmarksName(index);
使用示例:
javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;
// 获取指定索引的书签名称
var bookmarkName = plugInObj.CustomBookmarksName(0);
console.log("书签名称:", bookmarkName);
// 获取所有书签名称
var bookmarksCount = plugInObj.CustomBookmarksCount;
for (var i = 0; i < bookmarksCount; i++) {
var bookmarkName = plugInObj.CustomBookmarksName(i);
console.log("书签" + i + "名称:", bookmarkName);
}
CustomBookMarksData
说明:
字符型;可读写;设置/读取PDF文档中所有自定义书签的Base64数据。
语法:
javascript
// 设置
plugInObj.CustomBookMarksData = varObj;
// 读取
varObj = plugInObj.CustomBookMarksData;
使用示例:
javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;
// 读取所有书签数据
var bookmarksData = plugInObj.CustomBookMarksData;
console.log("书签数据:", bookmarksData);
// 设置书签数据
plugInObj.CustomBookMarksData = "新的书签数据";
console.log("书签数据已设置");
书签操作方法
AddCustomBookmark
语法:
javascript
AddCustomBookmark(bUserSetPos, bkmkName, [pageNumber], [poxX], [poxY])
功能:
添加用户自定义书签。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
bUserSetPos | 必选 | bool | 是否用户指定位置 |
bkmkName | 必选 | string | 书签名称 |
pageNumber | 可选 | long | 书签所在页码 |
posX | 可选 | long | 书签X坐标 |
posY | 可选 | long | 书签Y坐标 |
返回值:
无返回值
说明:
添加用户自定义书签。参数bUserSetPos值为false,则在当页面顶部位置插入自定义书签;值为true,则在参数pageNumber、posX、posY定义的位置处插入自定义书签。
使用示例:
javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;
// 在当前位置添加书签
plugInObj.AddCustomBookmark(false, "第一章", 0, 0, 0);
// 在指定位置添加书签
plugInObj.AddCustomBookmark(true, "第二章", 1, 100, 200);
// 在指定页面顶部添加书签
plugInObj.AddCustomBookmark(false, "第三章", 2, 0, 0);
GetBookmarkDataByIndex
语法:
javascript
GetBookmarkDataByIndex(index)
功能:
根据索引序号获取自定义书签Base64字符串。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
index | 必选 | long | 用户自定义书签索引序号 |
返回值:
无返回值
说明:
根据索引序号获取自定义书签Base64字符串。
使用示例:
javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;
// 获取指定索引的书签数据
var bookmarkData = plugInObj.GetBookmarkDataByIndex(0);
console.log("书签数据:", bookmarkData);
// 获取所有书签数据
var bookmarksCount = plugInObj.CustomBookmarksCount;
for (var i = 0; i < bookmarksCount; i++) {
var bookmarkData = plugInObj.GetBookmarkDataByIndex(i);
console.log("书签" + i + "数据:", bookmarkData);
}
GotoBookmark
语法:
javascript
GotoBookmark(base64bkData)
功能:
根据自定义书签Base64字符串跳转到书签位置。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
base64bkData | 必选 | string | 自定义书签Base64数据 |
返回值:
无返回值
说明:
根据自定义书签Base64字符串跳转到书签位置。
使用示例:
javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;
// 跳转到指定书签
var bookmarkData = plugInObj.GetBookmarkDataByIndex(0);
plugInObj.GotoBookmark(bookmarkData);
console.log("已跳转到书签位置");
// 跳转到指定书签(通过名称)
var bookmarksCount = plugInObj.CustomBookmarksCount;
for (var i = 0; i < bookmarksCount; i++) {
var bookmarkName = plugInObj.CustomBookmarksName(i);
if (bookmarkName === "第一章") {
var bookmarkData = plugInObj.GetBookmarkDataByIndex(i);
plugInObj.GotoBookmark(bookmarkData);
console.log("已跳转到第一章");
break;
}
}
RemoveCustomBookmarkByIndex
语法:
javascript
RemoveCustomBookmarkByIndex(index)
功能:
根据索引序号删除用户自定义书签。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
index | 必选 | long | 用户自定义书签索引序号 |
返回值:
无返回值
说明:
根据索引序号删除用户自定义书签。
使用示例:
javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;
// 删除指定索引的书签
plugInObj.RemoveCustomBookmarkByIndex(0);
console.log("书签已删除");
// 删除所有书签
var bookmarksCount = plugInObj.CustomBookmarksCount;
for (var i = bookmarksCount - 1; i >= 0; i--) {
plugInObj.RemoveCustomBookmarkByIndex(i);
console.log("书签" + i + "已删除");
}
RemoveCustomBookmarkByName
语法:
javascript
RemoveCustomBookmarkByName(bkmkName)
功能:
根据书签名称删除用户自定义书签。
参数:
名称 | 必选/可选 | 数据类型 | 说明 |
---|---|---|---|
bkmkName | 必选 | string | 用户自定义书签名称 |
返回值:
无返回值
说明:
根据书签名称删除用户自定义书签。
使用示例:
javascript
// 基本用法
var plugInObj = OfficeControlObj.ActiveDocument;
// 根据名称删除书签
plugInObj.RemoveCustomBookmarkByName("第一章");
console.log("书签'第一章'已删除");
// 删除多个书签
var bookmarksToDelete = ["第一章", "第二章", "第三章"];
for (var i = 0; i < bookmarksToDelete.length; i++) {
plugInObj.RemoveCustomBookmarkByName(bookmarksToDelete[i]);
console.log("书签'" + bookmarksToDelete[i] + "'已删除");
}
方法分类总结
分类 | 方法/属性 | 功能 | 说明 |
---|---|---|---|
书签信息 | CustomBookmarksCount | 书签总数 | 统计PDF文档用户自定义书签总数 |
书签信息 | CustomBookmarksName | 书签名称 | 读取指定索引值的用户自定义书签名称 |
书签信息 | CustomBookMarksData | 书签数据 | 设置/读取PDF文档中所有自定义书签的Base64数据 |
书签操作 | AddCustomBookmark | 添加书签 | 添加用户自定义书签 |
书签操作 | GetBookmarkDataByIndex | 获取书签数据 | 根据索引序号获取自定义书签Base64字符串 |
书签操作 | GotoBookmark | 跳转书签 | 根据自定义书签Base64字符串跳转到书签位置 |
书签操作 | RemoveCustomBookmarkByIndex | 删除书签 | 根据索引序号删除用户自定义书签 |
书签操作 | RemoveCustomBookmarkByName | 删除书签 | 根据书签名称删除用户自定义书签 |
使用流程
1. 基本书签管理流程
javascript
// 基本书签管理流程
function basicBookmarkManagement() {
var plugInObj = OfficeControlObj.ActiveDocument;
// 添加书签
function addBookmark() {
plugInObj.AddCustomBookmark(false, "第一章", 0, 0, 0);
plugInObj.AddCustomBookmark(false, "第二章", 1, 0, 0);
plugInObj.AddCustomBookmark(false, "第三章", 2, 0, 0);
console.log("书签添加完成");
}
// 获取书签信息
function getBookmarkInfo() {
var count = plugInObj.CustomBookmarksCount;
console.log("书签总数:", count);
for (var i = 0; i < count; i++) {
var name = plugInObj.CustomBookmarksName(i);
console.log("书签" + i + ":", name);
}
}
// 跳转到书签
function gotoBookmark(index) {
var bookmarkData = plugInObj.GetBookmarkDataByIndex(index);
plugInObj.GotoBookmark(bookmarkData);
console.log("已跳转到书签" + index);
}
return {
addBookmark: addBookmark,
getBookmarkInfo: getBookmarkInfo,
gotoBookmark: gotoBookmark
};
}
2. 高级书签管理流程
javascript
// 高级书签管理流程
function advancedBookmarkManagement() {
var plugInObj = OfficeControlObj.ActiveDocument;
// 书签管理配置
var bookmarkConfig = {
enableLogging: true,
enableValidation: true,
enableErrorHandling: true,
enableQualityControl: true
};
// 应用书签管理配置
function applyBookmarkConfig() {
try {
if (bookmarkConfig.enableLogging) {
console.log("书签管理日志已启用");
}
if (bookmarkConfig.enableValidation) {
console.log("书签验证已启用");
}
console.log("书签管理配置应用成功");
} catch (error) {
console.error("书签管理配置应用失败:", error);
}
}
// 监控书签状态
function monitorBookmarkStatus() {
var status = {
bookmarksCount: plugInObj.CustomBookmarksCount,
bookmarksData: plugInObj.CustomBookMarksData
};
console.log("书签状态监控:", status);
return status;
}
return {
applyBookmarkConfig: applyBookmarkConfig,
monitorBookmarkStatus: monitorBookmarkStatus
};
}
3. 书签质量控制流程
javascript
// 书签质量控制流程
function bookmarkQualityControl() {
var plugInObj = OfficeControlObj.ActiveDocument;
// 书签质量控制
function controlBookmarkQuality() {
var bookmarkQuality = {
totalBookmarks: 0,
validBookmarks: 0,
invalidBookmarks: 0,
qualityScore: 0
};
bookmarkQuality.totalBookmarks = plugInObj.CustomBookmarksCount;
for (var i = 0; i < bookmarkQuality.totalBookmarks; i++) {
var bookmarkName = plugInObj.CustomBookmarksName(i);
if (bookmarkName && bookmarkName.trim() !== "") {
bookmarkQuality.validBookmarks++;
} else {
bookmarkQuality.invalidBookmarks++;
}
}
if (bookmarkQuality.totalBookmarks > 0) {
bookmarkQuality.qualityScore = (bookmarkQuality.validBookmarks / bookmarkQuality.totalBookmarks) * 100;
}
console.log("书签质量控制:", bookmarkQuality);
return bookmarkQuality;
}
// 执行质量控制
var qualityResult = controlBookmarkQuality();
console.log("书签质量控制结果:", qualityResult);
}
完整示例
1. 基础书签管理
javascript
// 基础书签管理示例
function basicBookmarkManagement() {
var plugInObj = OfficeControlObj.ActiveDocument;
// 添加书签
function addBookmark() {
plugInObj.AddCustomBookmark(false, "第一章", 0, 0, 0);
plugInObj.AddCustomBookmark(false, "第二章", 1, 0, 0);
console.log("书签添加完成");
}
// 获取书签信息
function getBookmarkInfo() {
var count = plugInObj.CustomBookmarksCount;
console.log("书签总数:", count);
for (var i = 0; i < count; i++) {
var name = plugInObj.CustomBookmarksName(i);
console.log("书签" + i + ":", name);
}
}
return {
addBookmark: addBookmark,
getBookmarkInfo: getBookmarkInfo
};
}
2. 高级书签管理
javascript
// 高级书签管理示例
function advancedBookmarkManagement() {
var plugInObj = OfficeControlObj.ActiveDocument;
// 书签管理配置
var bookmarkConfig = {
enableLogging: true,
enableValidation: true,
enableErrorHandling: true,
enableQualityControl: true
};
// 应用书签管理配置
function applyBookmarkConfig() {
if (bookmarkConfig.enableLogging) {
console.log("书签管理日志已启用");
}
if (bookmarkConfig.enableValidation) {
console.log("书签验证已启用");
}
console.log("书签管理配置应用完成");
}
// 监控书签状态
function monitorBookmarkStatus() {
var status = {
bookmarksCount: plugInObj.CustomBookmarksCount,
bookmarksData: plugInObj.CustomBookMarksData
};
console.log("书签状态:", status);
return status;
}
return {
applyBookmarkConfig: applyBookmarkConfig,
monitorBookmarkStatus: monitorBookmarkStatus
};
}
3. 书签质量控制
javascript
// 书签质量控制示例
function bookmarkQualityControl() {
var plugInObj = OfficeControlObj.ActiveDocument;
// 书签质量控制
function controlBookmarkQuality() {
var bookmarkQuality = {
totalBookmarks: 0,
validBookmarks: 0,
invalidBookmarks: 0,
qualityScore: 0
};
bookmarkQuality.totalBookmarks = plugInObj.CustomBookmarksCount;
for (var i = 0; i < bookmarkQuality.totalBookmarks; i++) {
var bookmarkName = plugInObj.CustomBookmarksName(i);
if (bookmarkName && bookmarkName.trim() !== "") {
bookmarkQuality.validBookmarks++;
} else {
bookmarkQuality.invalidBookmarks++;
}
}
if (bookmarkQuality.totalBookmarks > 0) {
bookmarkQuality.qualityScore = (bookmarkQuality.validBookmarks / bookmarkQuality.totalBookmarks) * 100;
}
console.log("书签质量控制:", bookmarkQuality);
return bookmarkQuality;
}
// 执行质量控制
var qualityResult = controlBookmarkQuality();
console.log("书签质量控制结果:", qualityResult);
}
注意事项
- 书签索引:书签索引从0开始,注意索引范围
- 书签名称:书签名称不能为空,确保名称的唯一性
- 书签位置:书签位置参数需要正确设置
- 错误处理:实现完善的错误处理机制
- 性能考虑:避免频繁操作书签
- 资源管理:及时清理不需要的书签
- 状态同步:保持书签状态的一致性
错误处理
javascript
// 书签管理错误处理
function handleBookmarkError(operationType, error) {
console.error("书签管理处理失败:", operationType, error.message);
switch(operationType) {
case 'AddCustomBookmark':
console.log("书签添加失败,请检查:");
console.log("1. 书签名称是否有效");
console.log("2. 书签位置是否正确");
console.log("3. 文档状态是否正常");
break;
case 'GotoBookmark':
console.log("书签跳转失败,请检查:");
console.log("1. 书签数据是否有效");
console.log("2. 书签是否存在");
console.log("3. 文档状态是否正常");
break;
case 'RemoveCustomBookmark':
console.log("书签删除失败,请检查:");
console.log("1. 书签索引是否正确");
console.log("2. 书签是否存在");
console.log("3. 文档状态是否正常");
break;
default:
console.log("未知书签管理处理失败");
}
}
最佳实践
1. 书签管理最佳实践
javascript
// 书签管理最佳实践
function bookmarkManagementBestPractice() {
// 书签管理配置
var bookmarkConfig = {
enableLogging: true,
enableValidation: true,
enableErrorHandling: true,
enableQualityControl: true
};
// 应用书签管理配置
function applyBookmarkConfig() {
try {
// 设置书签管理处理
if (bookmarkConfig.enableLogging) {
console.log("书签管理日志已启用");
}
if (bookmarkConfig.enableValidation) {
console.log("书签验证已启用");
}
console.log("书签管理配置应用成功");
} catch (error) {
handleBookmarkError('applyBookmarkConfig', error);
}
}
// 应用配置
applyBookmarkConfig();
}
2. 书签质量控制最佳实践
javascript
// 书签质量控制最佳实践
function bookmarkQualityControlBestPractice() {
// 书签质量控制
function controlBookmarkQuality() {
try {
// 书签质量控制
var bookmarkQuality = {
totalBookmarks: 0,
validBookmarks: 0,
invalidBookmarks: 0,
qualityScore: 0
};
// 计算质量分数
if (bookmarkQuality.totalBookmarks > 0) {
bookmarkQuality.qualityScore = (bookmarkQuality.validBookmarks / bookmarkQuality.totalBookmarks) * 100;
}
console.log("书签质量控制完成:", bookmarkQuality);
return bookmarkQuality;
} catch (error) {
console.error("书签质量控制失败:", error.message);
return null;
}
}
// 执行质量控制
var qualityResult = controlBookmarkQuality();
console.log("书签质量控制结果:", qualityResult);
}
技术要点
- 书签索引:书签索引从0开始,注意索引范围
- 书签名称:书签名称不能为空,确保名称的唯一性
- 书签位置:书签位置参数需要正确设置
- 错误处理:完善的错误处理机制
- 性能优化:避免频繁操作书签
- 资源管理:及时清理不需要的书签
- 状态同步:保持书签状态的一致性