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

如何在PDF按钮脚本中检查用户是否已安装特定自定义图章?

解决方案

核心思路

无需手动获取图章路径,直接通过Acrobat的app.stamps集合检测自定义图章是否存在;插入图章后,通过验证注释的渲染属性判断是否加载成功,失败则替换为标准"Approved"图章。

完整实现代码

// 初始化要使用的图章ID,默认用标准Approved动态图章
var useThisAP = "#DApproved";

// 遍历用户的图章集合,检查自定义图章是否存在
for (var i = 0; i < app.stamps.length; i++) {
    var stamp = app.stamps[i];
    // 匹配自定义图章的实际名称(需与你的图章名称完全一致)
    if (stamp.name === "customDynStamp") {
        useThisAP = "customDynStamp";
        break;
    }
}

// 插入选中的图章
var annot = this.addAnnot({
    page: 0,
    type: "Stamp",
    name: "FinApproval",
    rect: [356, 200, 453, 245],
    AP: useThisAP
});

// 验证图章是否成功加载
var isStampValid = false;
try {
    // 尝试获取图章的AP属性,判断是否有效
    var apRef = annot.getProp("AP");
    if (apRef && typeof apRef !== "undefined") {
        isStampValid = true;
    }
} catch(e) {
    isStampValid = false;
}

// 若自定义图章加载失败,替换为标准图章
if (!isStampValid && useThisAP !== "#DApproved") {
    this.deleteAnnot(annot);
    annot = this.addAnnot({
        page: 0,
        type: "Stamp",
        name: "FinApproval",
        rect: [356, 200, 453, 245],
        AP: "#DApproved"
    });
}

// 隐藏审批按钮
var f = getField("Approval button");
if (f) {
    f.display = display.hidden;
}

关键说明

  • 图章存在性检测:app.stamps包含用户所有可用图章(自定义+系统默认),遍历集合匹配名称即可准确判断存在性,避开手动拼接路径的问题。
  • 有效性验证:用try-catch包裹AP属性获取操作,若自定义图章不存在,插入时会返回无效引用,此时捕获异常并替换为标准图章。
  • 容错处理:添加审批按钮存在性检查,避免因按钮不存在导致脚本报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:15:30