如何指定要在Java中使用的打印机?

目前正在检索我的机器上安装的默认打印机以进行打印。 我希望能够选择文档转到哪台打印机。 这样做的最佳方法是什么?

码:

PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, null); System.out.println("Printer Selected " + services[Printerinx]); //PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService(); DocFlavor[] docFalvor = services[Printerinx].getSupportedDocFlavors(); for (int i = 0; i < docFalvor.length; i++) { System.out.println(docFalvor[i].getMimeType()); } 

在下面创建PrintUtility类,导入它并尝试调用PrintUtility.findPrintService("name_of_my_printer"); 如果你知道你的打印机名称; 如果您不知道有权访问哪些打印机,请调用PrintUtility.getPrinterServiceNameList(); 对于包含所有可行的注册打印机名称的List

或者更多详细信息,请参阅我对此SO问题的回答 :

 package com.stackoverflow.print; import java.awt.print.PrinterJob; import javax.print.PrintService; import java.util.List; import java.util.ArrayList; public final class PrintUtility { /** * Retrieve a Print Service with a name containing the specified PrinterName; will return null if not found. * * @return */ public static PrintService findPrintService(String printerName) { printerName = printerName.toLowerCase(); PrintService service = null; // Get array of all print services PrintService[] services = PrinterJob.lookupPrintServices(); // Retrieve a print service from the array for (int index = 0; service == null && index < services.length; index++) { if (services[index].getName().toLowerCase().indexOf(printerName) >= 0) { service = services[index]; } } // Return the print service return service; } /** * Retrieves a List of Printer Service Names. * * @return List */ public static List getPrinterServiceNameList() { // get list of all print services PrintService[] services = PrinterJob.lookupPrintServices(); List list = new ArrayList(); for (int i = 0; i < services.length; i++) { list.add(services[i].getName()); } return list; } /** * Utility class; no construction! */ private PrintUtility() {} } 

PrintServiceLookup.lookupPrintService()方法提供了一种按名称查找打印机的方法。 使用PrinterName属性对象准备HashAttributeSet并将其传递给lookup方法。

使用如下代码:

 AttributeSet aset = new HashAttributeSet(); aset.add(new PrinterName("MyPrinter", null)); PrintService[] pservices = PrintServiceLookup.lookupPrintServices(null, aset); 

适用于Linux和CUPS。

 int i ; DocFlavor fl= null; PrintService printService[]= PrintServiceLookup.lookupPrintServices(fl,null); for(i=0;i