如何在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
相关产品推荐
相关产品推荐

