1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java打印word_Java jacob调用打印机打印word文档

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

时间:2021-04-03 17:03:43

相关推荐

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 上,找不到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();

}

}

}

示例代码:

如果此文对您有帮助,微信打赏我一下吧~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。