当前位置: 首页 > 面试题库 >

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

戚弘和
2023-03-14
问题内容

当前正在检索机器上安装的默认打印机以进行打印。我希望能够选择文档要使用的打印机。最好的方法是什么?

码:

 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<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() {}
}


 类似资料:
  • 问题内容: 我想使用PDFBox打印 由iText创建的 PDF文件 。我已经使用PDDocument类及其方法print()成功尝试了此操作。您可以在此处找到文档: http //pdfbox.apache.org/apidocs/。 (我正在使用此代码:) 方法print()很好用,但是 有一个问题:当我需要打印多个文件时,该方法要求我为每个文档选择打印机。 有什么办法只能设置一次打印机吗?

  • 问题内容: 我只想在不选择用户的情况下打印JasperReport。我进行了搜索,但是没有有效的解决方案。这是我的代码的相关部分: 我想选择一台打印机,而不是简单的printReport。有什么办法吗? 问题答案: 这是应该的样子:

  • 问题内容: 我想用Java制作图像,然后在尺寸为150 x 100毫米的标签上的300dpi标签打印机上打印。如何制作图像,以便将线条(或任何种类的元素)准确地打印在位置(10,10)(以毫米为单位),并在位置(10,50)处结束? 换句话说:我的挑战不是如何制作一条线(我使用的是Graphics2D,bufferedImage),而是如何准确地知道该行在标签上的位置(以毫米为单位)。 有任何想法

  • 问题内容: 使用Java,我需要在未本地安装的网络打印机上进行打印。我只知道打印机名称。我看过的所有教程都以类似以下内容开始: 问题是可能没有安装打印机,因此在这种情况下服务将为空。我需要直接设置打印机名称,而不仅仅是通过可见的打印机枚举。 问题答案: 如果Java AWT Printing未向运行打印应用程序的Windows / Active Directory用户注册,则无法通过路径找到打印机

  • 问题内容: Java中有什么方法可以打印到特定的IPP打印机?我发现所有示例代码和教程都集中在如何使用以下类似内容打印特定类型的文档上: 此代码段仅打印到找到的第一台能够打印文档的打印机。就我而言,我想通过其URI查找打印机,但似乎不支持此功能。我尝试使用,而不是,并添加了一个属性,但这不会返回任何打印机。我怀疑查找服务正在寻找可以更改其目标URI的打印机,而不是寻找具有该URI的打印机。 作为最

  • 我需要在cmd上打印这个字符。其UNICODE编码为U+26C0。我尝试了这个:system.out.print(“”);但在跑步中我得到了“?”角色谢谢。