修改书签内容
场景说明
修改书签内容是文档处理中的核心功能,可以实现文档内容的动态填充和更新。
适用场景:
- 合同模板字段填充
- 表单数据自动填充
- 文档内容批量更新
- 个性化文档生成
相关 API 文档
示例代码
修改书签文本内容(完整参数)
async function modifyBookmarkText() {
// 获取指定书签
const bookmark = await Application.ActiveDocument.Bookmarks.item('bookmarkName');
// 直接使用书签的 setText 方法设置新文本内容
// 参数:content - 书签位置的文本(必填)
const success = await bookmark.setText('新的书签内容');
if (success) {
console.log('书签内容修改成功');
}
}
批量修改多个书签
async function batchModifyBookmarks() {
// 定义要填充的数据
const bookmarkData = {
'甲方': 'A公司',
'乙方': 'B公司',
'签订日期': '2026-01-28',
'合同金额': '100,000元'
};
// 批量填充书签内容
for (const [bookmarkName, content] of Object.entries(bookmarkData)) {
try {
const bookmark = await Application.ActiveDocument.Bookmarks.item(bookmarkName);
// 直接使用书签的 setText 方法
await bookmark.setText(content);
} catch (error) {
console.error(`书签 ${bookmarkName} 不存在`);
}
}
console.log('批量修改完成');
}
在书签中追加内容
async function appendToBookmark() {
const bookmark = await Application.ActiveDocument.Bookmarks.item('bookmarkName');
const range = await bookmark.range;
// 在书签末尾追加内容(需要通过 Range 对象操作)
await range.appendText('追加的内容');
console.log('内容追加成功');
}
在书签中插入内容
async function insertIntoBookmark() {
const bookmark = await Application.ActiveDocument.Bookmarks.item('bookmarkName');
const range = await bookmark.range;
// 在书签开头插入内容(offset 为 0)
await range.insertText(0, '插入的前缀内容');
console.log('内容插入成功');
}
为书签添加预设值
async function setBookmarkCandidates() {
// 为书签添加下拉预设值
// **重要:对象的 key 必须是已存在的书签名称**
const success = await Application.ActiveDocument.Bookmarks.setTextCandidates({
'甲方': ['A公司', 'B公司', 'C公司'], // '甲方' 是书签名称
'乙方': ['X公司', 'Y公司', 'Z公司'], // '乙方' 是书签名称
'合同类型': ['采购合同', '销售合同', '服务合同'] // '合同类型' 是书签名称
});
if (success) {
console.log('预设值添加成功');
}
}
注意事项
setText()会替换书签的全部内容appendText()、insertText()、clear()等方法需要通过 Range 对象操作appendText()在书签末尾追加内容insertText()可以在指定偏移位置插入内容setTextCandidates()方法:对象的 key 必须是已存在的书签名称,value 是预设值数组- 预设值功能需要光标进入书签区域后才能看到下拉按钮