zoukankan      html  css  js  c++  java
  • Java jacob调用打印机打印word文档

    前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档。

    起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整。网上的代码也是千篇一律,在我的打印设备Canon iR2525/2530 UFRII LT上,我能获取到打印机的各属性,当前任务数。但是打印机没反应。

    可参考这两篇文章:

    http://www.360doc.com/content/05/0916/11/332_12789.shtml

    http://www.ibm.com/developerworks/cn/java/l-javaprint/

    折腾了好久,最终决定由用一个第三方的,找到了jacob,还不错,特此记录下。

    1.将jacob的dll文件拷贝到C:WindowsSystem32中。

    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 class TestDoc {
        public static void main(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();
            }
        }
    }

    示例代码:

    http://pan.baidu.com/s/1o7NrPcY    up56

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

  • 相关阅读:
    JAVA队列的使用
    四种线程池的使用
    JAVA中只有值传递
    为什么说Java语言是平台无关的?
    Jsoup爬虫解析
    java爬虫
    oracle触发器
    easyUi引入方法
    highchart
    July 20th 2017 Week 29th Thursday
  • 原文地址:https://www.cnblogs.com/Joanna-Yan/p/5346084.html
Copyright © 2011-2022 走看看