JScript调用Acrobat IAC API时出现AcroExch.App成员未找到错误求助
嘿,我之前也踩过这个坑,这个错误大概率是ActiveX组件注册异常、ProgID用错,或者你调用了AcroApp实例上不存在的成员导致的。下面是几个可以尝试的解决方案:
1. 确认使用正确的ProgID
首先要确保实例化Acrobat应用时用对了ProgID。Adobe Acrobat IAC API的正确ProgID是AcroExch.App,你的初始化代码应该是这样的:
var AcroApp = new ActiveXObject("AcroExch.App");
如果这里写错了名称,后续任何成员调用都会触发这个“找不到成员”的错误。
2. 重新注册Acrobat的ActiveX组件
有时候Acrobat的组件会因为更新、安装异常导致注册失效,手动注册就能解决:
- 找到Acrobat安装目录下的
AcroExch.dll(通常路径是C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\,根据你的版本和系统位数调整) - 以管理员身份打开命令提示符,运行注册命令:
regsvr32 "C:\Program Files (x86)\Adobe\Acrobat DC\Acrobat\AcroExch.dll"
如果是64位系统,记得用SysWOW64目录下的32位regsvr32(路径:C:\Windows\SysWOW64\regsvr32.exe)来注册32位组件。
3. 检查第二行调用的成员是否存在
错误提示明确是“Member not found”,所以第二行代码很可能是调用了AcroApp没有的属性或方法。比如要让Acrobat显示,正确的属性是Visible,而不是拼写错误的Show或者其他名称:
// 正确写法 AcroApp.Visible = true; // 错误写法会触发你的问题 AcroApp.Show(); // 这个方法不存在
你可以用一段调试代码遍历AcroApp的所有可用成员,确认你要调用的内容是否存在:
var AcroApp = new ActiveXObject("AcroExch.App"); for (var prop in AcroApp) { WScript.Echo(prop); }
这段代码会输出所有可调用的属性和方法,帮你排查拼写或名称错误。
4. 确认使用的是Adobe Acrobat Pro而非Reader
注意:Adobe Reader不支持完整的IAC交互API,只有Acrobat Pro版本才提供这些功能。如果用的是Reader,哪怕实例化成功,后续调用很多成员都会失败。
5. 修复Acrobat安装
如果以上方法都没用,可能是Acrobat的安装文件损坏了。打开Acrobat,进入帮助 > 修复安装,让程序自动修复损坏的组件和注册信息。
内容的提问来源于stack exchange,提问作者thedanotto

