【问题标题】:How to handle javascript error from vbs?如何处理来自 vbs 的 javascript 错误?
【发布时间】: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


【解决方案1】:

“securityHandler”属性会告诉你文件是否受保护并且不能被修改。文档安全性和签名会将 securityHandler 设置为 null 以外的值。当它为空时,可以应用水印。

If IsNull(jso.securityHandler) Then
...
End If

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2021-11-07
    • 2014-12-05
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多