如何指定要在Java中使用的打印机? [英] How do I specify the printer I want to use in Java?
问题描述
目前正在检索我机器上安装的默认打印机以进行打印。我希望能够选择文档转到哪台打印机。这样做的最佳方法是什么?
Currently retrieving the default printer installed on my machine for printing. I want to be able to pick which printer the documents go to. What is the best method of doing this ?
代码:
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);
如果你知道你的打印机名称;如果您不知道您有权访问哪些打印机,请为 List
调用 PrintUtility.getPrinterServiceNameList();
所有可行的注册打印机名称
Create the PrintUtility
class below, import it and try calling PrintUtility.findPrintService("name_of_my_printer");
if you know your printer name; if you don't know what printers you have access to, call PrintUtility.getPrinterServiceNameList();
for a List
containing all viable registered printer names.
另见我对这个问题的回答了解更多细节:
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<String> getPrinterServiceNameList() {
// get list of all print services
PrintService[] services = PrinterJob.lookupPrintServices();
List<String> list = new ArrayList<String>();
for (int i = 0; i < services.length; i++) {
list.add(services[i].getName());
}
return list;
}
/**
* Utility class; no construction!
*/
private PrintUtility() {}
}
这篇关于如何指定要在Java中使用的打印机?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!