获取指定的打印机进行打印 package com.jxdd.order.service;import java.io.File;import java.io.FileInputStream;import javax.print.Doc;import javax.print.DocFlavor;import javax.print.DocPrintJob;import javax.print.PrintService;import
package com.jxdd.order.service;
import java.io.File;
import java.io.FileInputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.ServiceUI;
import javax.print.SimpleDoc;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.swing.JFileChooser;
/**
*
* @author : ouyanglei:
* @date :2017年12月11日
* @version 1.0
* @parameter
* @return
*/
public class PrintDemo {
public static void main(String[] args) {
JFileChooser fileChooser = new JFileChooser(); //创建打印作业
int state = fileChooser.showOpenDialog(null);
if(state == fileChooser.APPROVE_OPTION){
File file = new File("D:/printTest.txt"); //获取选择的文件
//构建打印请求属性集
HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//设置打印格式,因为未确定类型,所以选择autosense
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
//查找所有的可用的打印服务
PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
//将所有查找出来的打印机与自己想要的打印机进行匹配,找出自己想要的打印机
PrintService myPrinter = null;
for (int i = 0; i < printService.length; i++) {
System.out.println("service found: " + printService[i]);
String svcName = printService[i].toString();
if (svcName.contains("Snagit 11")) {
myPrinter = printService[i];
System.out.println("my printer found: " + svcName);
System.out.println("my printer found: " + myPrinter);
break;
}
}
// //定位默认的打印服务
// PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
// //显示打印对话框
// PrintService service = ServiceUI.printDialog(null, 200, 200, printService,
// defaultService, flavor, pras);
if(myPrinter != null){
try {
DocPrintJob job = myPrinter.createPrintJob(); //创建打印作业
FileInputStream fis = new FileInputStream(file); //构造待打印的文件流
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das);
job.print(doc, pras);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
