使用 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 并开始填写一个或多个参数(或它们的数组)。