2016-06-08 165 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();'效果很好。 –