
本文介绍了一种在Adobe Acrobat JavaScript环境中,尤其是在按钮脚本中,可靠地检测用户是否安装了特定自定义图章的方法。通过利用Acrobat在指定图章AP(Appearance Stream)不存在时,会默认生成100x100点大小图章的特性,我们可以通过检查临时创建图章的尺寸来判断目标自定义图章的可用性,从而实现动态选择使用自定义图章或标准图章。
在Adobe Acrobat中开发交互式PDF文档时,经常需要根据用户环境动态调整功能。一个常见的需求是检查用户是否安装了特定的自定义图章。例如,当一个文档需要多用户审批,并希望通过按钮插入一个专用的自定义审批图章时,如果用户没有安装该图章,则应回退到使用标准的“已批准”动态图章,以避免插入一个空白的占位符。
直接在按钮脚本中获取用户图章文件夹路径(如app.getPath('app','stamps'))通常是受限的,这使得通过文件系统检查图章文件是否存在变得困难。此外,仅仅通过this.addAnnot方法尝试添加一个图章,即使指定的AP(Appearance Stream)不存在,Acrobat也不会直接报错或在图章属性中提供明确的指示,这使得难以判断图章是否成功加载了预期的图像。
解决上述挑战的关键在于利用Adobe Acrobat在处理图章AP时的一个特定行为: 如果通过this.addAnnot方法添加图章时,仅指定一个点作为位置(而非矩形区域),且指定的AP名称对应的图章不存在,Acrobat会自动创建一个尺寸为100x100点的空白图章。
这意味着,除非你的自定义图章恰好也是100x100点,否则你可以通过检查临时创建图章的尺寸来判断目标自定义图章是否存在。
以下是实现这一检测逻辑的详细步骤和相应的JavaScript代码:
临时添加图章进行检测: 首先,使用目标自定义图章的AP名称,在文档的某个位置(例如,页面左上角的一个点)临时添加一个图章。重要的是,只提供一个点作为rect参数,这样Acrobat会根据AP是否存在来决定其尺寸。
检查图章尺寸: 获取刚刚创建的图章的rect属性。如果其宽度和高度都是100点,则表明指定的自定义图章AP不存在;否则,自定义图章很可能已成功加载。
移除临时图章: 检测完成后,务必移除这个临时创建的图章,以保持文档的整洁。
根据检测结果选择AP: 根据尺寸检测的结果,选择使用自定义图章的AP名称或标准的动态图章AP名称。
示例代码:
// 定义自定义图章的AP名称
var customStampAP = "customDynStamp"; 
// 定义备用标准图章的AP名称
var defaultStampAP = "#DApproved"; 
var useThisAP;
// 尝试添加一个临时图章来检测自定义图章是否存在
var tempAnnot = this.addAnnot({
    page: 0, // 可以选择任意页面,例如当前页面
    type: "Stamp",
    name: "TempStampCheck_" + Math.random().toString(36).substring(7), // 唯一的临时名称
    rect: [0, 0], // 仅指定一个点,让Acrobat自动决定尺寸
    AP: customStampAP
});
// 检查临时图章的尺寸
// 如果自定义图章不存在,Acrobat会生成100x100点的图章
if (tempAnnot && tempAnnot.rect[2] - tempAnnot.rect[0] === 100 && tempAnnot.rect[3] - tempAnnot.rect[1] === 100) {
    // 自定义图章不存在,使用默认图章
    useThisAP = defaultStampAP;
    console.println("自定义图章 '" + customStampAP + "' 未安装,将使用默认图章。");
} else {
    // 自定义图章存在,使用自定义图章
    useThisAP = customStampAP;
    console.println("自定义图章 '" + customStampAP + "' 已安装,将使用该图章。");
}
// 移除临时图章
if (tempAnnot) {
    this.removeAnnot(tempAnnot);
}
// 现在,使用确定的AP值添加实际的审批图章
var annot = this.addAnnot({
    page: 0,
    type: "Stamp",
    name: "FinApproval",
    rect: [356, 200, 453, 245],
    AP: useThisAP
});
// 假设“Approval button”是一个触发此脚本的按钮,添加图章后隐藏它
var f = getField("Approval button");
if (f) {
    f.display = display.hidden;
}通过巧妙地利用Adobe Acrobat处理缺失图章AP时自动生成默认尺寸图章的特性,我们能够可靠地在JavaScript环境中检测自定义图章的安装状态。这种方法规避了直接文件系统访问的限制,为动态适应用户环境、提升PDF文档交互体验提供了一个实用的解决方案。
以上就是如何在Adobe Acrobat中检查自定义图章是否存在的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号