我的机器上安装了Acrobat XI Pro。
我正在尝试编写PowerShell代码,该代码将使用诸如https://groups.google.com/forum/#!topic/comp.text.pdf/DNtcbUgjas4和Convert 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
中的代码答案 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可以直接访问这样的函数,例如你链接的例子。