无法从PowerShell使用Acrobat XI JSObject

时间:2015-05-22 15:26:00

标签: powershell pdf automation acrobat

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

我正在尝试编写PowerShell代码,该代码将使用诸如https://groups.google.com/forum/#!topic/comp.text.pdf/DNtcbUgjas4Convert pdf to Word document

之类的技术从PDF文档中提取页面

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

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

有任何线索吗?

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

中的代码

1 个答案:

答案 0 :(得分:2)

所以,这是一个古老的问题,你可能已经很久没有从这里开始,或者想出来了。我试图在涉及Acrobat自动化的PowerShell中完成一些任务,遇到同样的问题,并认为可靠的Google搜索将为我解决我的问题。不幸的是,你的问题是我能找到的唯一相关结果,你似乎从来没有得到答案。

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

哦,顺便说一下,我相信你需要改变从$ jsObject调用方法的方式,并使用反射。一个简短的代码示例:

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

我无法获得$ jsObject。<function&gt;工作(也许我错过了一些东西......)。我不清楚为什么vbs可以直接访问这样的函数,例如你链接的例子。