【问题标题】:Cannot use Acrobat XI JSObject from PowerShell无法从 PowerShell 使用 Acrobat XI JSObject
【发布时间】:2015-08-04 16:51:36
【问题描述】:

我的机器上安装了 Acrobat XI Pro。

我正在尝试编写 PowerShell 代码,该代码将使用 https://groups.google.com/forum/#!topic/comp.text.pdf/DNtcbUgjas4Convert pdf to Word document 等技术从 PDF 文档中提取页面

当我在GetPDDoc() 的输出上调用GetJSObject() 时,我得到一个System._ComObject,它没有公开我发现的各种示例代码中使用的任何方法:

PS> $JavaScriptObject
System.__ComObject

PS> $JavaScriptObject.GetType()
Value does not fall within the expected range.
At line:1 char:1
+ $JavaScriptObject.GetType()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], ArgumentException
    + FullyQualifiedErrorId : System.ArgumentException


PS> $JavaScriptObject.numPages -eq $null
True

有什么线索吗?

注意:使用来自https://groups.google.com/forum/#!topic/comp.text.pdf/DNtcbUgjas4 的代码在 VBS 中也可以使用完全相同的逻辑

【问题讨论】:

    标签: powershell pdf automation acrobat


    【解决方案1】:

    所以,这是一个古老的问题,您可能早就从这个问题着手,或者想通了。我试图在 PowerShell 中执行一些涉及 Acrobat 自动化的任务,遇到了同样的问题,并认为可靠的 Google 搜索可以解决我的问题。不幸的是,您的结果是我能找到的唯一相关结果,而您似乎从未得到答案。

    如果其他人在这里结束,在这种情况下,这就是最终为我工作的方法。我在 Windows 10 机器上使用 PowerShell v5 执行此操作。我强烈怀疑问题在于 com-object 与 PowerShell v5 的接口方式。如果我打开命令行提示符并启动“powershell -version 2”,$jsObject 很好,我可以从对象调用 extractPages、numPages 等,而不是“不在预期范围内” GetType() 返回错误。我知道您不应该根据意见来回答,但这是我的怀疑,并且会(向我)解释为什么加载旧版本的 powershell 有效。 耸耸肩。我可能是错的,问题出在其他地方,但希望这对某个地方的人有所帮助。

    哦,顺便说一句,我相信您需要更改从 $jsObject 调用方法的方式,并使用反射。一个简短的 sn-p 示例:

        $jType = $jsObject.GetType()
        $extractPagesBFs = [System.Reflection.BindingFlags]"InvokeMethod","Public","Instance"
        $jType.InvokeMember("extractPages", $extractPagesBFs, $null, $jsObject, $extractPagesParam)
    

    我永远无法让 $jsObject.<function> 工作(也许我错过了一些东西......)。我不清楚为什么 vbs 可以直接访问这样的功能,例如在您链接的示例中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多