java打印word_Java jacob调用打印机打印word文档
前面說(shuō)了Java如何生成復(fù)雜的Word文檔,今年記錄下Java如何調(diào)用打印機(jī)打印word文檔。
起初用的是自帶的PrintJob,但是系統(tǒng)提供的打印機(jī)制并不成熟完整。網(wǎng)上的代碼也是千篇一律,在我的打印設(shè)備Canon iR2525/2530 UFRII LT上,我能獲取到打印機(jī)的各屬性,當(dāng)前任務(wù)數(shù)。但是打印機(jī)沒反應(yīng)。
可參考這兩篇文章:
折騰了好久,最終決定由用一個(gè)第三方的,找到了jacob,還不錯(cuò),特此記錄下。
1.將jacob的dll文件拷貝到C:\Windows\System32中。
2.在任務(wù)管理器中將服務(wù)DCom Server Process Launcher(DcomLaunch)打開。
3.將jacob.jar拷貝到項(xiàng)目的/libs目錄下。
值得注意的是,我在Windows Server 2008上,找不到dll文件,報(bào)錯(cuò):Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob-1.17-x86 in java.library.path
但是在win系統(tǒng)上,就沒事了。
所以這時(shí)候你需要將dll文件也拷貝至你的jdk/bin目錄下,jdk/jre/bin目錄下,以及jre/bin目錄下。這樣就沒有什么問(wèn)題了。
代碼如下:
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();
}
}
}
示例代碼:
如果此文對(duì)您有幫助,微信打賞我一下吧~
總結(jié)
以上是生活随笔為你收集整理的java打印word_Java jacob调用打印机打印word文档的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: “种杏北池中”下一句是什么
- 下一篇: 极米投影Z8X配置怎么样?