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:文档类型应用对象
参数
| 属性 | 数据类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 书签名字【如果传入的书签名长度超过40,则截取长度为40的字符串作为书签名】 |
| range | Writer.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: 文档类型应用对象
参数
| 属性 | 数据类型 | 必填 | 说明 |
|---|---|---|---|
| key | string | number | 是 | 书签名称/书签序号(序号从1开始) |
返回值
Promise<Writer.Bookmark>
示例
async function example(key) {
const bookmark = await Application.ActiveDocument.Bookmarks.item(key);
}
setTextCandidates
批量为书签添加预设值(为书签添加预设值后,光标进入到该书签区域时,书签尾部会显示一个小按钮,点击小按钮,预设值会显示在下拉列表里,点击某个预设值,会用此预设置替换掉该书签的内容)
语法
Application.ActiveDocument.Bookmarks.setTextCandidates(candidates)
Application: 文档类型应用对象
参数
| 属性 | 数据类型 | 必填 | 说明 |
|---|---|---|---|
| candidates | Writer.Candidates | 是 | Writer.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: 文档类型应用对象
参数
| 属性 | 数据类型 | 必填 | 说明 |
|---|---|---|---|
| items | Array | 是 | 书签设置项数组,每项包含 { key: string | number, text: string }- key: 书签名称或序号(序号从1开始) - text: 要设置的文本内容 |
返回值
Promise<Object>,返回批量设置的结果对象
| 字段 | 类型 | 说明 |
|---|---|---|
| success | boolean | 是否全部成功 |
| total | number | 总共执行的数量 |
| successCount | number | 成功的数量 |
| failureCount | number | 失败的数量 |
| details | Array | 每个书签的执行详情 |
| details[].key | string | number | 书签的 key(名称或序号) |
| details[].success | boolean | 该书签是否设置成功 |
| details[].error | string | 失败时的错误信息(可选) |
注意事项
- 仅支持
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: 文档类型应用对象
参数
| 属性 | 数据类型 | 必填 | 说明 |
|---|---|---|---|
| color | string | 是 | 十六进制颜色值,形如 #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: 文档类型应用对象
参数
| 属性 | 数据类型 | 必填 | 说明 |
|---|---|---|---|
| identifyRules | Writer.MarksIdentifyRule | 是 | 智能书签识别规则 |
| nameRule | Writer.MarksGenerateNameRule | 是 | 智能书签命名规则 |
| includeHeaderFooter | boolean | 否 | 是否包含页眉页脚区域 |
返回值
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();
}