首页 > 代码库 > java 调用打印机打印文件

java 调用打印机打印文件

/**
	 * 进行打印
	 * 
	 * @param file
	 * @param saveFile
	 * @param preFix
	 * @param formatFile
	 * @return
	 * @throws NoOfficeException
	 */
	public static void doPrintDoc(File file) {

		if (file == null || !file.exists()) {
			return;
		}

		// 获取文件后缀名
		int index = file.getName().indexOf(".");
		String extName = file.getName().toUpperCase().substring(index + 1);

		String comApp = "Word.Application";
		String property = "Documents";

		// 如果是Word的话
		if (extName.equals("DOC") || extName.equals("DOCX") || extName.equals("WPS")) {
			comApp = "Word.Application";
			property = "Documents";

		} else if (extName.equals("XLS") || extName.equals("XLSX") || extName.equals("ET")) {
			comApp = "Excel.Application";
			property = "Workbooks";

		} else if (extName.equals("PPT") || extName.equals("PPTX") || extName.equals("DPS")) {
			comApp = "PowerPoint.Application";
			property = "Presentations";
		}

		// 初始化组件
		ComThread.InitSTA();

		// 定义组件对象
		ActiveXComponent axc = new ActiveXComponent(comApp);
		try {
			if (!property.equals("Presentations")) {
				Dispatch.put(axc, "Visible", new Variant(false));
			}
			Dispatch document = axc.getProperty(property).toDispatch();

			Dispatch doc = null;

			// 如果是PPT的话
			if (property.equals("Presentations")) {
				doc = Dispatch.call(document, "Open", file.getAbsolutePath(), true, true, false).toDispatch();
			} else {
				doc = Dispatch.invoke(document, "Open", Dispatch.Method, new Object[] { file.getAbsolutePath() }, new int[1]).toDispatch();
			}

			Dispatch.call(doc, "PrintOut");
			Dispatch.call(doc, "Close");
			if (!property.equals("Presentations")) {
				axc.invoke("Quit", new Variant[] {});
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			comApp = "";
			property = "";
			ComThread.Release();
		}
	}
需要的jar和dll下载路径http://download.csdn.net/detail/daixinmei/7962251
dll要放在windows/system32下,或者jdk安装目录的bin下

java 调用打印机打印文件