调用打印机Demo

  接口 PrintService 是 DocPrintJob 的工厂。PrintService 描述了打印机的功能,并可查询它来了解打印机支持的属性。 

Java代码 复制代码 收藏代码
  1. import java.io.File;  
  2. import java.io.FileInputStream;  
  3.   
  4. import javax.print.Doc;  
  5. import javax.print.DocFlavor;  
  6. import javax.print.DocPrintJob;  
  7. import javax.print.PrintService;  
  8. import javax.print.PrintServiceLookup;  
  9. import javax.print.ServiceUI;  
  10. import javax.print.SimpleDoc;  
  11. import javax.print.attribute.DocAttributeSet;  
  12. import javax.print.attribute.HashDocAttributeSet;  
  13. import javax.print.attribute.HashPrintRequestAttributeSet;  
  14. import javax.swing.JFileChooser;  
  15.   
  16.     /** 
  17.      * 建立与打印机的连接 
  18.      * @author Administrator 
  19.      * 
  20.      */  
  21. public class PrintDemo {  
  22.       
  23.     public static void main(String[] args) {  
  24.         JFileChooser fileChooser = new JFileChooser(); //创建打印作业  
  25.         int state = fileChooser.showOpenDialog(null);  
  26.         if(state == fileChooser.APPROVE_OPTION){  
  27.             File file = new File("D:/zkyzl.txt"); //获取选择的文件  
  28.             //构建打印请求属性集  
  29.             HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();  
  30.             //设置打印格式,因为未确定类型,所以选择autosense  
  31.             DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;  
  32.             //查找所有的可用的打印服务  
  33.             PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);  
  34.             //定位默认的打印服务  
  35.             PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();  
  36.             //显示打印对话框  
  37.             PrintService service = ServiceUI.printDialog(null, 200, 200, printService,   
  38.                     defaultService, flavor, pras);  
  39.             if(service != null){  
  40.                 try {  
  41.                     DocPrintJob job = service.createPrintJob(); //创建打印作业  
  42.                     FileInputStream fis = new FileInputStream(file); //构造待打印的文件流  
  43.                     DocAttributeSet das = new HashDocAttributeSet();  
  44.                     Doc doc = new SimpleDoc(fis, flavor, das);  
  45.                     job.print(doc, pras);  
  46.                 } catch (Exception e) {  
  47.                     e.printStackTrace();  
  48.                 }  
  49.             }  
  50.         }  
  51.     }  
  52. }  
原文地址:https://www.cnblogs.com/xiaopeipei/p/3844909.html