java打印word_Java jacob调用打印机打印word文档
前面說了Java如何生成復雜的Word文檔,今年記錄下Java如何調用打印機打印word文檔。
起初用的是自帶的PrintJob,但是系統提供的打印機制并不成熟完整。網上的代碼也是千篇一律,在我的打印設備Canon iR2525/2530 UFRII LT上,我能獲取到打印機的各屬性,當前任務數。但是打印機沒反應。
可參考這兩篇文章:
折騰了好久,最終決定由用一個第三方的,找到了jacob,還不錯,特此記錄下。
1.將jacob的dll文件拷貝到C:\Windows\System32中。
2.在任務管理器中將服務DCom Server Process Launcher(DcomLaunch)打開。
3.將jacob.jar拷貝到項目的/libs目錄下。
值得注意的是,我在Windows Server 2008上,找不到dll文件,報錯:Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob-1.17-x86 in java.library.path
但是在win系統上,就沒事了。
所以這時候你需要將dll文件也拷貝至你的jdk/bin目錄下,jdk/jre/bin目錄下,以及jre/bin目錄下。這樣就沒有什么問題了。
代碼如下:
public classTestDoc {public static voidmain(String[] args) {
String path="D:\\yanqiong.doc";
System.out.println("開始打印");
ComThread.InitSTA();
ActiveXComponent word=new ActiveXComponent("Word.Application");
Dispatch doc=null;
Dispatch.put(word,"Visible", new Variant(false));
Dispatch docs=word.getProperty("Documents").toDispatch();
doc=Dispatch.call(docs, "Open", path).toDispatch();try{
Dispatch.call(doc,"PrintOut");//打印
} catch(Exception e) {
e.printStackTrace();
System.out.println("打印失敗");
}finally{try{if(doc!=null){
Dispatch.call(doc,"Close",new Variant(0));
}
}catch(Exception e2) {
e2.printStackTrace();
}//釋放資源
ComThread.Release();
}
}
}
示例代碼:
如果此文對您有幫助,微信打賞我一下吧~
總結
以上是生活随笔為你收集整理的java打印word_Java jacob调用打印机打印word文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “种杏北池中”下一句是什么
- 下一篇: java框架白话_Java NIO框架N