Skip to content

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);
}

注意事项

  1. 书签索引:书签索引从0开始,注意索引范围
  2. 书签名称:书签名称不能为空,确保名称的唯一性
  3. 书签位置:书签位置参数需要正确设置
  4. 错误处理:实现完善的错误处理机制
  5. 性能考虑:避免频繁操作书签
  6. 资源管理:及时清理不需要的书签
  7. 状态同步:保持书签状态的一致性

错误处理

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);
}

技术要点

  1. 书签索引:书签索引从0开始,注意索引范围
  2. 书签名称:书签名称不能为空,确保名称的唯一性
  3. 书签位置:书签位置参数需要正确设置
  4. 错误处理:完善的错误处理机制
  5. 性能优化:避免频繁操作书签
  6. 资源管理:及时清理不需要的书签
  7. 状态同步:保持书签状态的一致性