调用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目录下,可以根据自己的情况,放在任何目录下,只要找到就可以。

	<!-- https://mvnrepository.com/artifact/com.jacob/jacob -->
		<!-- 导入本地jar 打印 -->
		<dependency>
			<groupId>com.jacob</groupId>
			<artifactId>jacob</artifactId>
			<version>1.19</version>
			<scope>system</scope>
			<systemPath>${project.basedir}/src/main/resources/jacob.jar</systemPath>
		</dependency>

注意:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值