使用 JNA 打印 MS Word 文档
Printing a MS Word document using JNA
我正在使用 MSOfficeDemo/MSWord classes 作为启动器。
如何打印在 Word 中打开的文档?
在 MSWord.java
class 中的新方法中,我已经尝试过:
this.invokeNoReply("Print", this.getDocuments());
this.invokeNoReply("PrintOut", this.getDocuments());
this.invokeNoReply("FilePrint", this.getDocuments());
上述每个调用都出现 Unknown Name
(hr=-2147352570) 错误。
我已经搜索了一个星期了,还没有找到解决方案。
您需要将方法签名与文档相匹配,而不是猜测。
您需要实际打印活动文档 (this.getActiveDocument()
) 而不是文档集。然后参考Document methods to see which method (and arguments) to use, in this case PrintOut才是正确的方法。
你传递的参数是什么,你需要查看ComLateBindingObject中的各种方法签名并选择最符合你需要的那个(你可以传递一个或两个参数,比你需要的多一个数组。
此代码应该可以工作...尚未对其进行测试(我的 Windows VM 上没有 MSWord)但结合上面的链接应该可以让您朝着正确的方向前进:
this.invokeNoReply("PrintOut", getActiveDocument());
如果还是不行,试试:
this.invokeNoReply("PrintOut", getActiveDocument().getIDispatch());
如果您确实需要传递任何参数,您将为它们创建一个 VARIANT
并开始填写一个或多个参数(或它们的数组)。
我正在使用 MSOfficeDemo/MSWord classes 作为启动器。
如何打印在 Word 中打开的文档?
在 MSWord.java
class 中的新方法中,我已经尝试过:
this.invokeNoReply("Print", this.getDocuments());
this.invokeNoReply("PrintOut", this.getDocuments());
this.invokeNoReply("FilePrint", this.getDocuments());
上述每个调用都出现 Unknown Name
(hr=-2147352570) 错误。
我已经搜索了一个星期了,还没有找到解决方案。
您需要将方法签名与文档相匹配,而不是猜测。
您需要实际打印活动文档 (this.getActiveDocument()
) 而不是文档集。然后参考Document methods to see which method (and arguments) to use, in this case PrintOut才是正确的方法。
你传递的参数是什么,你需要查看ComLateBindingObject中的各种方法签名并选择最符合你需要的那个(你可以传递一个或两个参数,比你需要的多一个数组。
此代码应该可以工作...尚未对其进行测试(我的 Windows VM 上没有 MSWord)但结合上面的链接应该可以让您朝着正确的方向前进:
this.invokeNoReply("PrintOut", getActiveDocument());
如果还是不行,试试:
this.invokeNoReply("PrintOut", getActiveDocument().getIDispatch());
如果您确实需要传递任何参数,您将为它们创建一个 VARIANT
并开始填写一个或多个参数(或它们的数组)。