日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java打印word_Java jacob调用打印机打印word文档

發布時間:2023/12/1 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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文档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。