test.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package com.iamberry.rst.utils;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  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. public class test {
  16. public static void main(String[] args) {
  17. //获取系统所有打印机
  18. PrintService[] services = PrintServiceLookup.lookupPrintServices(null,null);
  19. for (int i = 0;i<=services.length;i++){
  20. System.out.println(services[i].getName());
  21. }
  22. JFileChooser fileChooser = new JFileChooser(); //创建打印作业
  23. int state = fileChooser.showOpenDialog(null);
  24. if(state == fileChooser.APPROVE_OPTION){
  25. File file = new File("D:/123.jpg"); //获取选择的文件
  26. //构建打印请求属性集
  27. HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
  28. //设置打印格式,因为未确定类型,所以选择autosense
  29. DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
  30. //查找所有的可用的打印服务
  31. PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
  32. //定位默认的打印服务
  33. PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
  34. //显示打印对话框
  35. PrintService service = ServiceUI.printDialog(null, 200, 200, printService,
  36. defaultService, flavor, pras);
  37. if(service != null){
  38. try {
  39. DocPrintJob job = service.createPrintJob(); //创建打印作业
  40. FileInputStream fis = new FileInputStream(file); //构造待打印的文件流
  41. DocAttributeSet das = new HashDocAttributeSet();
  42. Doc doc = new SimpleDoc(fis, flavor, das);
  43. job.print(doc, pras);
  44. } catch (Exception e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. }
  49. }
  50. }