当前位置: 首页 > news >正文

AcroForm 文档(打开时)级脚本对比 Excel VBA 参考

文档级脚本位于文档JavaScript结构的顶层,一个PDF可以包含任意数量的文档级脚本。这些脚本在Acrobat或Adobe Reader中"打开文档时"首先执行。需要注意的是,由于这些脚本可能在文档完全加载并显示给用户之前就已运行,因此应避免在其中编写依赖文档加载完成的代码。例如,任何影响文档页面、创建可视化元素或用户界面元素的代码都不应放在文档脚本中。

文档脚本通常用于:

  • 执行初始化操作
  • 进行顶层环境测试
  • 定义文档中其他代码将使用的函数和变量

示例:在文档脚本中定义创建UI元素的函数是可行的,但直接在该脚本中调用此类函数可能存在风险。


变量与函数

在文档脚本(或文档的任何脚本)中定义的变量或函数均属于文档作用域。这意味着文档内的所有脚本均可直接访问这些变量或函数,无需额外限定符。

文档脚本示例

// 定义变量
var nDoc1Var = 3;// 文档内任意脚本均可使用该变量
b = nDoc1Var + 1;// 也可通过文档限定符访问(非必需)
b = this.nDoc1Var + 1;
  • 前两行为常规用法,最后一行通过this关键字(指向文档对象)访问变量。
  • 在文档作用域内,this可省略;但在文档作用域外需通过文档对象访问。

在文档作用域外访问变量/函数

若多个文档的脚本需协同工作,或设计自动化脚本处理特定文档/表单时,可能需要在文档作用域外访问其变量/函数。

可信脚本示例
// 打开文档
var oDoc1 = app.openDoc(...文档路径...);// 设置文档变量(仅限可信上下文执行)
oDoc1.nDoc1Var = 1;

注意:Acrobat会阻止非可信上下文访问文档作用域对象,因此上述代码仅在可信脚本中有效。


非可信文档上下文的访问机制

早期Acrobat通过**文档披露(document disclosure)**实现安全机制。需在文档脚本中主动披露对象,其他文档的非可信脚本才能通过app.activeDocs数组访问已披露的文档。

文档脚本

// 披露当前文档对象
this.disclosed = 
http://www.xdnf.cn/news/464617.html

相关文章:

  • 关于多线程的Redis模型
  • 数据科学和机器学习的“看家兵器”——pandas模块 之二
  • c++从入门到精通(四)--动态内存,模板与泛型编程
  • python克洛伊婚纱摄影预约管理系统
  • P2679 [NOIP 2015 提高组] 子串
  • Linux之Yum源与Nginx服务篇
  • Node.js 安装 + React Flow 快速入门:环境安装与项目搭建
  • Spring Boot 和 Jedis版本搭配的建议
  • 【言语】刷题5
  • win11平台下的docker-desktop中的volume位置问题
  • Newtonsoft.Json.JsonSerializationException
  • 安卓A15系统实现修改锁屏界面默认壁纸功能
  • 多个docker-compose-xx 停止并完全卸载 删除
  • C++:字符数组与字符串指针变量的大小
  • 鸿蒙OSUniApp制作多选框与单选框组件#三方框架 #Uniapp
  • 协作赋能-1-制造业生产流程重构
  • Midjourney 最佳创作思路与实战技巧深度解析【附提示词与学习资料包下载】
  • 一些问题杂记
  • NY244NY249美光闪存颗粒NY252NY256
  • unity terrain 在生成草,树,石头等地形障碍的时候,无法触发碰撞导致人物穿过模型
  • 全链路压测实战指南:从理论到高可用架构的终极验证
  • Transformer的理解
  • Elasticsearch 分片机制高频面试题(含参考答案)
  • 【备忘踩坑】Android单元测试中读取测试assets的方法
  • 一套基于 Bootstrap 和 .NET Blazor 的开源企业级组件库
  • C#中Action的用法
  • Milvus Docker 部署教程
  • 【FFmpeg+SDL】使用FFmpeg捕获屏幕,SDL显示
  • 套路化编程:C# winform ListView 自定义排序
  • 5款AI驱动的MySQL数据库管理工具:提升运维效率的智能之选