You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于JS对象的多维数组在PDF表单中删除数据的问题求助

解决Acrobat PDF表单中密码记录无法删除的问题

1. 替换静态数据初始化,改用持久化存储

你之前把数据写死在文档级初始化脚本里,导致每次表单加载都会重新执行这段脚本,覆盖你用splice()修改后的临时数组。必须改用Acrobat JS支持的持久化存储方案:

  • 方案一:全局存储(Acrobat应用级,所有表单可访问)
// 文档级初始化脚本
var passwordRecords;
// 先检查是否已有存储的数据,没有则初始化默认记录
if (global.passwordRecords) {
    passwordRecords = global.passwordRecords;
} else {
    passwordRecords = [
        {id: 1, site: "Example", user: "test", pass: "123456"},
        // 其他默认记录
    ];
    global.passwordRecords = passwordRecords;
}
  • 方案二:文档级存储(仅当前PDF可用,更安全)
// 文档级初始化脚本
var passwordRecords;
if (!doc.dataObjects.exists("PasswordRecords")) {
    // 首次创建数据对象并初始化默认值
    var dataObj = doc.dataObjects.add("PasswordRecords");
    dataObj.value = JSON.stringify([
        {id: 1, site: "Example", user: "test", pass: "123456"}
    ]);
}
// 读取存储的数据
passwordRecords = JSON.parse(doc.dataObjects.get("PasswordRecords").value);

2. 执行删除操作后同步持久化

删除选中记录时,调用splice()修改内存数组后,必须把修改后的数组重新存回持久化存储:

// 删除按钮的点击脚本
function deleteSelectedRecord() {
    // 替换成你实际获取选中记录索引的逻辑
    var selectedIndex = getSelectedRecordIndex();
    if (selectedIndex !== -1) {
        // 删除对应索引的记录
        passwordRecords.splice(selectedIndex, 1);
        
        // 同步到全局存储(对应方案一)
        global.passwordRecords = passwordRecords;
        // 或者同步到文档级存储(对应方案二)
        // doc.dataObjects.get("PasswordRecords").value = JSON.stringify(passwordRecords);
        
        // 刷新查询视图,重新渲染表单字段
        refreshQueryView(); // 替换成你实际的视图刷新函数
    }
}

3. 确保视图渲染依赖持久化数据

修改查询视图的渲染逻辑,让它始终从持久化存储的数组中读取数据,而不是从初始化时的静态数组。这样删除操作后,刷新视图就能看到更新后的结果。

4. 验证数据修改有效性

删除操作完成后,可通过Acrobat的JS控制台(按Ctrl+J打开)执行以下命令验证:

  • 全局存储:console.log(global.passwordRecords)
  • 文档级存储:console.log(JSON.parse(doc.dataObjects.get("PasswordRecords").value))
    关闭并重新打开表单后再次执行上述命令,确认数据没有恢复到初始状态。

内容的提问来源于stack exchange,提问作者user14825633

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:20:28