欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

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

发布时间:2023/12/1 java 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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文档的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。