前面说了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文档相关推荐

  1. java freemarker word_Java 用Freemarker完美导出word文档(带图片)(示例代码)

    Java  用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...

  2. java合并word_java实现合并多个word文档 且可换页 实例代码(基于docx4j)

    org.docx4j/docx4j/ Maven依赖写法 Maven下载jar包 org.docx4j docx4j 3.1.0 实例代码: package com.tourMarket.tools; ...

  3. html文档打印乱码怎么解决,如何解决Word文档打印后乱码的问题

    当把Word文档打印的时候,单击打印后,打印出来的文档却是乱码的,这种问题其实很多人都遇到过,有的时候是因为Word文档本身就是乱码的,所以打印出来自然也是乱码的,有的时候是因为打印机设置的问题,好好 ...

  4. java生成图章到word_JAVA不使用POI给Word文档添加水印

    程序员在开发项目时,经常需要给一些图片.文件添加水印,但往往代码编写复杂,只能是先将文件上传再调用Graphics类才能实现这一功能.但是最无奈的是这个类只能给图片添加水印,而无法通过程序给Word文 ...

  5. Java Web项目中使用Freemarker生成Word文档

    Web项目中生成Word文档的操作屡见不鲜,基于Java的解决方案也是很多的,包括使用Jacob.Apache POI.Java2Word.iText等各种方式,其实在从Office 2003开始,就 ...

  6. java实现导出内容不固定的word文档

    之前遇到过一个需求,需要导出一个word的周报,周报的内容是可变,然后网上找了下方法,下面摘抄一种方便的实现手段: Java用freemarker导出word 一.模板的制作 先用Word做一个模板, ...

  7. java 将ftl文件作为模板导出word文档

    因为poi等输出word很麻烦,所以本文使用word编辑好模板,转成xml再转成ftl,在java中导入ftl模板,填充数据再生成为word下载或保存. 一.模板文档 1.在Word中编辑好word模 ...

  8. JAVA实现Freemarker生成动态数据的Word文档下载到浏览器

    使用的jar包版本:freemarker-2.3.28.jar 使用开发工具:idea 1. 创建模板: 新建一个word文档,打开后编辑成想要的格式 动态数据替换成${xxx},如果是多条集合用${ ...

  9. doc转pdf java不失真_java使用Aspose实现 word文档转pdf文件高效不失真

    java使用Aspose word文档转pdf功能实现 主要步骤 使用Aspose进行文档转换,首先引入相应的jar包到系统环境 项目resource下导入license.xml文件 使用Aspose ...

最新文章

  1. angularjs 中 Factory,Service,Provider 之间的区别
  2. 【下载】《看见新力量》第二期,带你走进数十位科技创业者背后的故事
  3. 140. Word Break II
  4. eclipse中在线安装gradle插件
  5. leetcode第12题Python版整数转罗马字符串
  6. begintrans返回值_BeginTransaction() 方法
  7. 如何解除计算机上的安全警报,怎么关闭windows的安全警报
  8. iOS开发之观察者模式
  9. 淘宝产品3d展示-家具沙发三维模型应用
  10. 啥是原神?女友说想要全角色语音+表情包,顺手用python把高清图也整下来了
  11. 落花响应html,史上最“脑残”的“抢火车票”程序(node.js版) - 落花落雨不落叶...
  12. mi4a android tv,小米电视4A精简系统教程
  13. Python制作的足球双人小游戏,你确定你不过来看看?
  14. 小学生计算机清除键是mc,我的世界一键清除指令 | 手游网游页游攻略大全
  15. 朱志星:道路交通事故“减量控大”技术治理思路和对策
  16. Java前叉夹器_传统夹器和碟刹公路如何选择
  17. 完整的ChatRoom聊天室代码
  18. 分享一些比较好的博客网站
  19. 关闭手机相机声音教程(理论支持所有S60V3)
  20. 福建最新建筑八大员(机械员)模拟真题集及答案解析

热门文章

  1. linux查询日志中页面返回状态码,[linux shell] Shell脚本实现apache日志中的状态码分析...
  2. java多线程 cpu分配_java多线程总结(转载)
  3. linux的system () 函数详解
  4. python删除列表中字符串_python - 删除字符串中的字符列表
  5. opencv读取视频并保存为图片
  6. java虚拟机常用命令工具
  7. ubuntu+eclipse+svn
  8. 一个快速生成元素背景的 React 组件
  9. matlab ode45 二阶微分,matlab关于ode45解二阶微分方程的困惑
  10. java csv 导入数据库_java – 如何上传CSV文件然后自动将数据插入数据库?