【发布时间】:2017-12-05 21:05:58
【问题描述】:
我正在尝试将水印添加到 pdf 文件中。我写了vbs脚本。它可以工作,但是当 pdf 被签名时,我的脚本无法添加水印。 VBS“On Error Resume Next”和 Err 对象不提供错误信息... 如何捕捉 js 错误?
这是 .vbs 脚本的一部分
...
Set objPDDoc = CreateObject("AcroExch.PDDoc")
objPDDoc.Open(dpath & fileobj.Name)
Set jso = objPDDoc.GetJSObject
Call jso.addWatermarkFromText("text", jso.app.constants.align.left, "Arial", 14, jso.Color.blue, 0, jso.numPages, True, True, True, jso.app.constants.align.left, jso.app.constants.align.bottom, 0.4, 35, False, 0.9, False, 0, 1)
...
和错误(在带有'Call jso.addWatermarkFromText'的字符串上)
---------------------------
Windows Script Host
---------------------------
Script: C:\pdf_sign_frd\print_sign.vbs
Line: 463
Char: 4
Error: NotAllowedError: Запрещен доступ к данному свойству или методу.
Code: 800A03E9
Source: Acrobat JavaScript
【问题讨论】:
-
不确定这是否需要JavaScript标签,因为源代码是VBscript。
-
我不确定你的意思。为什么你认为它不在 err 对象中,在 VBScript 中,事情会冒泡,直到找到错误处理程序。由于 VBScript 没有处理它,当 WSH 从 VBScript 冒泡到 WSH 时,WSH 做了(通过崩溃)。记住 COM 调用真的是 -
HResult = FunctionName(Inparm1, ..., Inparmn, OUTPARAM)。 -
VB 将上述内容显示为
OUTPARAM = FunctionName(Inparam1, ..., Inparamn),并将HResult放入err对象中。 -
JavaScript 标记在这里很重要,因为 JSO 是通向 Acrobat JavaScript 解释器的桥梁。错误来自该解释器,不幸的是,只能在该上下文中解释。您需要知道导致 JavaScript 错误的原因,才能了解 VBA 代码出了什么问题。
标签: javascript pdf vbscript error-handling adobe