在看PDF打印的时候顺便也看了看word和excel的打印,这里只简单的知道如何使用,原理没有深究~
首先这里只说打印,至于生成word或者excel,可以使用poi(jacob貌似也可以)
JACOB是一个 JAVA到微软的COM接口的桥梁。使用JACOB允许任何JVM访问COM对象,从而使JAVA应用程序能够调用COM对象。如果你要对 MS Word、Excel 进行处理,JACOB 是一个好的选择。
而关于打印的话,总结起来有这么几个步骤。
1、使用Jacob创建 ActiveX部件对象:
ActiveXComponent wd = new ActiveXComponent("Word.Application");
2、打开Word文档
Dispatch.put(wd, "Visible", new Variant(true)); // 这里Visible是控制文档打开后是可见还是不可见,若是静默打印,那么第三个参数就设为false就好了 Dispatch document = wd.getProperty("Documents").toDispatch(); Dispatch doc = Dispatch.invoke(document, "Open", Dispatch.Method, new Object[] { filePath }, new int[1]).toDispatch();
3、设置打印机
wd.setProperty("ActivePrinter", new Variant("pdfFactory Pro"));
第二个参数即为打印机的name
4、设置打印参数并打印
Dispatch.callN(doc, "PrintOut", new Object[]{});
5、最后关闭Word文档
wd.invoke("Quit", new Variant[] {});
到这里,利用jacob打印就实现了,并且只要将第一步中创建的ActiveX部件对象改成Excel.Application就可以实现Excel的打印了
这里在说点题外话,之前说了jacob还可以操作word和excel,这里简单提一下
可以看到在上面的第2步中,我们使用“open”打开了一个现有的word文档,如果改用“add”,那么我们就可以新建一个文档了
Dispatch document = Dispatch.call(documents, "Add").toDispatch(); // 使用Add命令创建一个新文档 Dispatch wordContent = Dispatch.get(document, "Content").toDispatch(); // 取得word文件的内容 Dispatch.call(wordContent, "InsertAfter", "这里是一个段落的内容");//插入一个段
另外需要注意的是,在使用jacob时,不仅需要添加jacob的jar包,在java安装目录下的bin目录中也要复制jacob的dll文件,否则会报错:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob-1.14.3-x86 in java.library.path
原文地址:http://blog.csdn.net/u012345283/article/details/41053977