Skip to main content

Bookmarks

JSSDK: 1.2.2、FilezOffice2022.3 FP2 支持

Bookmark对象的集合,这些对象代表指定选定内容、区域或文档中的书签。

属性

count

书签的数量

语法

Application.ActiveDocument.Bookmarks.count

Application: 文档类型应用对象

返回值

count: Promise<number>

示例

async function example() {
const count = await Application.ActiveDocument.Bookmarks.count;
}

方法

add

在当前选中区域添加书签

语法

document.Bookmarks.add(name, range)

Application:文档类型应用对象

参数

属性数据类型必填说明
namestring书签名字【如果传入的书签名长度超过40,则截取长度为40的字符串作为书签名】
rangeWriter.Range插入书签的区域(默认在当前选区位置插入)

返回值

Promise<Writer.Bookmark>

示例

// 在当前选区位置插入名称为 bm 的书签
async function example1() {
const res = await Application.ActiveDocument.Bookmarks.add('bm');
}

// 在第一个段落区域插入名称为 bm 的书签
async function example1() {
const para = await Application.ActiveDocument.Paragraphs.item(1);
const range = await para.range;
const res = await Application.ActiveDocument.Bookmarks.add('bm', range);
}

item

根据参数获取单个书签

语法

Application.ActiveDocument.Bookmarks.item(key)

Application: 文档类型应用对象

参数

属性数据类型必填说明
keystring | number书签名称/书签序号(序号从1开始)

返回值

Promise<Writer.Bookmark>

示例

async function example(key) {
const bookmark = await Application.ActiveDocument.Bookmarks.item(key);
}

setTextCandidates

批量为书签添加预设值(为书签添加预设值后,光标进入到该书签区域时,书签尾部会显示一个小按钮,点击小按钮,预设值会显示在下拉列表里,点击某个预设值,会用此预设置替换掉该书签的内容)

语法

Application.ActiveDocument.Bookmarks.setTextCandidates(candidates)

Application: 文档类型应用对象

参数

属性数据类型必填说明
candidatesWriter.CandidatesWriter.Candidates的定义是{ [key: string]: string[]; },key为书签名称,string[]为该书签对应的预设值数组

返回值

Promise<boolean>

示例

async function example() {
const success = await Application.ActiveDocument.Bookmarks.setTextCandidates({
'甲方': [
'A公司',
'B公司'
],
'乙方': [
'C公司',
'D公司'
]
});
}

batchSetText

JSSDK: 1.11.0、FilezOffice V8.3 支持

批量设置书签内容

语法

Application.ActiveDocument.Bookmarks.batchSetText(items)

Application: 文档类型应用对象

参数

属性数据类型必填说明
itemsArray书签设置项数组,每项包含 { key: string | number, text: string }
- key: 书签名称或序号(序号从1开始)
- text: 要设置的文本内容

返回值

Promise<Object>,返回批量设置的结果对象

字段类型说明
successboolean是否全部成功
totalnumber总共执行的数量
successCountnumber成功的数量
failureCountnumber失败的数量
detailsArray每个书签的执行详情
details[].keystring | number书签的 key(名称或序号)
details[].successboolean该书签是否设置成功
details[].errorstring失败时的错误信息(可选)

注意事项

  • 仅支持 Application.ActiveDocument.Bookmarks.batchSetText()
  • 不支持 range.Bookmarks.batchSetText()

示例

// 批量设置书签内容
async function example() {
const result = await Application.ActiveDocument.Bookmarks.batchSetText([
{ key: 1, text: '第一个书签的内容' }, // 通过序号设置
{ key: '甲方', text: 'A公司' }, // 通过名称设置
{ key: '乙方', text: 'B公司' },
{ key: 3, text: '第三个书签的内容' },
{ key: '合同编号', text: 'HT-2026-001' }
]);

console.log('批量设置结果:', result);
// 返回值示例:
// {
// "success": true,
// "total": 5,
// "successCount": 5,
// "failureCount": 0,
// "details": [
// { "key": 1, "success": true },
// { "key": "甲方", "success": true },
// { "key": "乙方", "success": true },
// { "key": 3, "success": true },
// { "key": "合同编号", "success": true }
// ]
// }

// 处理结果
if (result.success) {
console.log('所有书签设置成功');
} else {
console.log(`成功: ${result.successCount}, 失败: ${result.failureCount}`);
result.details.forEach(item => {
if (!item.success) {
console.error(`书签 ${item.key} 设置失败: ${item.error}`);
}
});
}
}

setHighlightColor

JSSDK: 1.11.0、zOffice V8.3 支持

设置书签背景色

语法

Application.ActiveDocument.Bookmarks.setHighlightColor(color)

Application: 文档类型应用对象

参数

属性数据类型必填说明
colorstring十六进制颜色值,形如 #ccd21f

返回值

Promise<boolean>

示例

async function example() {
const success = await Application.ActiveDocument.Bookmarks.setHighlightColor('#ccd21f');
}

identify

JSSDK: 1.7.01、FilezOffice V7.2 hotfix1 支持

识别文档中可设置为书签的区域,智能生成书签

语法

Application.ActiveDocument.Bookmarks.identify(identifyRules, nameRule, includeHeaderFooter)

Application: 文档类型应用对象

参数

属性数据类型必填说明
identifyRulesWriter.MarksIdentifyRule智能书签识别规则
nameRuleWriter.MarksGenerateNameRule智能书签命名规则
includeHeaderFooterboolean是否包含页眉页脚区域

返回值

Promise<boolean>

示例

// 将有文字内容的下划线区域识别为书签,以下划线上方内容命名书签
async function example1() {
const success = await Application.ActiveDocument.Bookmarks.identify(Writer.MarksIdentifyRule.TEXT, Writer.MarksGenerateNameRule.ABOVE, true);
}

// 将有文字内容的下划线区域识别为书签,以下划线前面的文字内容命名书签
async function example2() {
const success = await Application.ActiveDocument.Bookmarks.identify(Writer.MarksIdentifyRule.TEXT, Writer.MarksGenerateNameRule.BEFORE, true);
}
// 将内容为空的下划线区域识别为书签,以下划线前面的文字内容命名书签
async function example3() {
const success = await Application.ActiveDocument.Bookmarks.identify(Writer.MarksIdentifyRule.EMPTY, Writer.MarksGenerateNameRule.BEFORE, true);
}

toJson

获取文档里包含的所有书签

语法

Application.ActiveDocument.Bookmarks.toJson()

Application:文档类型应用对象

返回值

Promise<string[]>,书签名称的数组

示例

async function example() {
const bookmarks = await Application.ActiveDocument.Bookmarks.toJson();
}