拷贝粘贴
场景说明
在文档中进行内容的复制粘贴操作,支持两种实现方式:
WebClipboard 方式
通过剪贴板 API 进行复制粘贴,通过属性赋值操作 WebClipboard.Copy 和 WebClipboard.Paste,直接复制粘贴文档内容。
Content 方式
使用 getContent/setContent 方法,可以获取到 JSON 格式的内容数据并进行存储,适用于需要持久化保存文档格式的场景。
相关 API 文档
示例代码
WebClipboard 方式 - 通过剪贴板复制
async function copyViaClipboard() {
// 从源文档获取书签内容
const sourceBookmark = await app1.ActiveDocument.Bookmarks.item('sourceBookmark');
const sourceRange = await sourceBookmark.range;
// 复制到剪贴板:将 Range 对象赋值给 Copy 属性
app1.ActiveDocument.WebClipboard.Copy = sourceRange;
console.log('内容已复制到剪贴板');
// 从剪贴板粘贴到目标文档
const targetBookmark = await app2.ActiveDocument.Bookmarks.item('targetBookmark');
const targetRange = await targetBookmark.range;
// 粘贴:将目标 Range 对象赋值给 Paste 属性
app2.ActiveDocument.WebClipboard.Paste = targetRange;
console.log('内容已从剪贴板粘贴');
}
Content 方式 - 获取 JSON 数据并存储
// 假设已经初始化了两个文档应用
let app1; // 源文档
let app2; // 目标文档
async function copyBetweenDocuments() {
// 从源文档获取书签内容(包含格式)
const bookmark1 = await app1.ActiveDocument.Bookmarks.item('sourceBookmark');
const content = await bookmark1.getContent();
// 设置到目标文档的书签位置
const bookmark2 = await app2.ActiveDocument.Bookmarks.item('targetBookmark');
const success = await bookmark2.setContent(content.data);
if (success) {
console.log('复制成功(保留格式)');
}
}
两种方式的主要区别在于:Content 方式可以获取到 JSON 格式的内容数据并进行存储。
| 特性 | WebClipboard 方式 | Content 方式 |
|---|---|---|
| 操作方式 | 属性赋值(Copy/Paste) | 方法调用(getContent/setContent) |
| 数据格式 | 剪贴板数据 | JSON 对象 |
| 数据存储 | 依赖浏览器剪贴板 | 可存储到数据库/文件 |
| 适用场景 | 直接复制粘贴文档内容 | 需要持久化保存文档格式 |
注意事项
WebClipboard 方式
- 通过剪贴板 API 进行复制粘贴操作
- WebClipboard 是
Application.ActiveDocument下的属性 Application.ActiveDocument.WebClipboard.Copy = range将 Range 复制到剪贴板(属性赋值)Application.ActiveDocument.WebClipboard.Paste = range将剪贴板内容粘贴到指定 Range(属性赋值)- 依赖浏览器剪贴板权限
- 某些浏览器可能限制剪贴板访问
Content 方式
- 使用
getContent()和setContent()方法进行内容复制 getContent()获取书签的完整内容对象(JSON 格式)setContent(content.data)设置书签内容- 返回的内容对象包含格式、样式等完整信息
- 核心优势:可以将获取的 JSON 数据存储到数据库或文件系统
通用说明
- 粘贴操作会替换目标 Range 的内容
- 根据实际需求选择合适的方式