2016-06-08 189 views
1

我使用MSOfficeDemo/MSWord类作为启动程序。使用JNA打印MS Word文档

如何打印在Word中打开的文档?

MSWord.java类的新方法,我已经试过:

this.invokeNoReply("Print", this.getDocuments()); 
this.invokeNoReply("PrintOut", this.getDocuments()); 
this.invokeNoReply("FilePrint", this.getDocuments()); 

我得到一个Unknown Name(HR = -2147352570)误差为每个上述的呼叫。

我一直在寻找一个星期,并没有找到解决方案。

回答

0

而不是猜测,您需要将您的方法签名与文档相匹配。

您需要实际打印活动文档(this.getActiveDocument())而不是文档集合。然后参考Document methods以查看使用哪种方法(和参数),在这种情况下,PrintOut是正确的方法。

你传递什么参数,你需要看不同的方法签名中ComLateBindingObject,并挑选最适合您的需求相匹配的(你可以通过一个或两个参数,比你需要一个数组更多。

此代码应该工作...没有测试它(没有的MSWord在我的Windows VM),但与链接结合以上这应该让你在正确的方向:

this.invokeNoReply("PrintOut", getActiveDocument()); 

如果没有按不工作,请尝试:

this.invokeNoReply("PrintOut", getActiveDocument().getIDispatch()); 

如果您确实需要传递任何参数,您将为它们创建一个VARIANT并开始填充一个或多个参数(或它们的数组)。

+0

谢谢。 [文档方法](https://msdn.microsoft.com/en-us/library/office/dn320611.aspx)页面是我一直在寻找。加'this.invokeNoReply(“PrintOut”,getActiveDocument();'效果很好。 –