接口 PrintService 是 DocPrintJob 的工廠。PrintService 描述了打印機的功能,並可查詢它來了解打印機支持的屬性
1 package com.tj.print; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 6 import javax.print.Doc; 7 import javax.print.DocFlavor; 8 import javax.print.DocPrintJob; 9 import javax.print.PrintService; 10 import javax.print.PrintServiceLookup; 11 import javax.print.ServiceUI; 12 import javax.print.SimpleDoc; 13 import javax.print.attribute.DocAttributeSet; 14 import javax.print.attribute.HashDocAttributeSet; 15 import javax.print.attribute.HashPrintRequestAttributeSet; 16 import javax.swing.JFileChooser; 17 18 public class PrintDemo1 { 19 public static void main(String[] args) { 20 JFileChooser fileChooser = new JFileChooser(); // 創建打印作業 21 int state = fileChooser.showOpenDialog(null); 22 if (state == fileChooser.APPROVE_OPTION) { 23 File file = fileChooser.getSelectedFile(); // 獲取選擇的文件 24 // 構建打印請求屬性集 25 HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); 26 // 設置打印格式,因為未確定類型,所以選擇autosense 27 DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; 28 // 查找所有的可用的打印服務 29 PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras); 30 // 定位默認的打印服務 31 PrintService defaultService = PrintServiceLookup 32 .lookupDefaultPrintService(); 33 // 顯示打印對話框 34 PrintService service = ServiceUI.printDialog(null, 200, 200, 35 printService, defaultService, flavor, pras); 36 if (service != null) { 37 try { 38 DocPrintJob job = service.createPrintJob(); // 創建打印作業 39 FileInputStream fis = new FileInputStream(file); // 構造待打印的文件流 40 DocAttributeSet das = new HashDocAttributeSet(); 41 Doc doc = new SimpleDoc(fis, flavor, das); 42 job.print(doc, pras); 43 } catch (Exception e) { 44 e.printStackTrace(); 45 } 46 } 47 } 48 } 49 }
