Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 不能使用席上的AcROCAT XJS对象 我的机器上安装了AcROATX-Pro。< /P>_Powershell_Pdf_Automation_Acrobat - Fatal编程技术网

Powershell 不能使用席上的AcROCAT XJS对象 我的机器上安装了AcROATX-Pro。< /P>

Powershell 不能使用席上的AcROCAT XJS对象 我的机器上安装了AcROATX-Pro。< /P>,powershell,pdf,automation,acrobat,Powershell,Pdf,Automation,Acrobat,我正在尝试编写PowerShell代码,使用诸如和的技术从PDF文档中提取页面 当我在GetPDDoc()的输出上调用GetJSObject()时,我得到一个系统。\u ComObject,它不公开我找到的各种示例代码中使用的任何方法: PS> $JavaScriptObject System.__ComObject PS> $JavaScriptObject.GetType() Value does not fall within the expected range. At l

我正在尝试编写PowerShell代码,使用诸如和的技术从PDF文档中提取页面

当我在
GetPDDoc()
的输出上调用
GetJSObject()
时,我得到一个
系统。\u 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
有线索吗


注意:完全相同的逻辑在VBS中使用来自

的代码工作,因此,这是一个老问题,您可能早就从这个问题开始了,或者已经解决了这个问题。我试图在PowerShell中完成一些涉及Acrobat自动化的任务,但遇到了同样的问题,我认为一个可靠的谷歌搜索可以帮我解决这个问题。不幸的是,你的结果是我能找到的唯一相关结果,而你似乎从未得到答案

如果有其他人到这里来,这就是我的工作,在这个例子中。我是在Windows10机器上用PowerShellV5做这件事的。我强烈怀疑问题在于com对象与PowerShell v5的接口方式。如果我打开一个命令行提示符并启动“powershell-version 2”,那么$jsObject就可以了,我可以从对象调用extractPages、numPages等到我的心脏内容,而不会由GetType()返回“不在预期范围内”错误。我知道你不应该根据意见来回答,但这是我的怀疑,这可以解释(向我)为什么加载旧版本的powershell会起作用。耸耸肩。我可能错了,问题出在其他地方,但希望这能帮助某些人,某些地方

哦,顺便说一句,我认为您需要改变从$jsObject调用方法的方式,并使用反射。一个简短的代码片段示例:

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

我从来没能让$jsObject.
工作过(也许我错过了一些东西…)。我不清楚为什么vbs可以直接访问像您链接的示例中那样的函数

是的,VBA工作得很好,powershell meh