如何在 Java 中指定要使用的打印机? [英] How do I specify the printer I want to use in Java?

查看:12
本文介绍了如何在 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"); 如果您知道您的打印机名称;如果您不知道可以访问哪些打印机,请调用 PrintUtility.getPrinterServiceNameList(); 以获取包含所有可行的已注册打印机名称的 List.

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.

另请参阅我的回答这个问题了解更多详情:

Alternately see my answer to this SO question for more details:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆