调用windows默认打印机打印指定目录下的word文档。

最近要做一个调用默认打印的程序,调用默认打印机,打印指定目录下的文档。

package com.xxxxx;

import javax.print.PrintService;
import javax.print.PrintServiceLookup;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/*
 * 默认打印机打印导出的word文档。
 * 需要找到导出的文档的地址和名字
 */
public class Print {
	public static void main(String[] args) {
		PrintService PS = PrintServiceLookup.lookupDefaultPrintService();
		String printerName = PS.getName();//// 打印机名包含字串
		String filePath = "C:javafx\\word.docx";// 文件路径
		printWord(filePath, printerName);// 调用打印方法
	}

	public static void printWord(String filePath, String printerName) {
//      初始化线程
		ComThread.InitSTA();
		ActiveXComponent word = new ActiveXComponent("Word.Application");
		// 设置打印机名称
		word.setProperty("ActivePrinter", new Variant(printerName));
		// 这里Visible是控制文档打开后是可见还是不可见,若是静默打印,那么第三个参数就设为false就好了
		Dispatch.put(word, "Visible", new Variant(false));//设置true就会打开文件
		// 获取文档属性
		Dispatch document = word.getProperty("Documents").toDispatch();
		// 打开激活文挡
		Dispatch doc = Dispatch.call(document, "Open", filePath).toDispatch();
		// Dispatch doc = Dispatch.invoke(document, "Open", Dispatch.Method,
		// new Object[] { filePath }, new int[1]).toDispatch();
		try {
			Dispatch.callN(doc, "PrintOut");
			System.out.println("打印成功!");
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("打印失败");
		} finally {
			try {
				if (doc != null) {
					Dispatch.call(doc, "Close", new Variant(0));// word文档关闭
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
			// 退出
			word.invoke("Quit", new Variant[0]);
			// 释放资源
			ComThread.Release();
			ComThread.quitMainSTA();
		}
	}
}

需要jar包,导入了一个本地jar包。我放在了resources目录下,可以根据自己的情况,放在任何目录下,只要找到就可以。

	
		
		
			com.jacob
			jacob
			1.19
			system
			${project.basedir}/src/main/resources/jacob.jar
		

注意:

本地需要将: jacob-1.19-x64.dll  放到
把dll文件放在%JAVA_HOME%\bin下(注意系统是32位还是64位),
也可以放在C:\Windows\System32下,
如果是64位应该放在C:\Windows\SysWOW64 下。建议放在jdk的bin目录下。

你可能感兴趣的:(方法,开发工具)