在Java中如何更改或设置默认打印机

时间:2012-08-03 00:23:57

标签: java printing

我知道如何获取可用打印机列表,我希望用户能够从列表中进行选择并将其设置为会话的默认值

使用Windows 7

我知道这很容易做到我只想创建一个简单的java程序 a:增加我的知识 b:这里的教师非常不喜欢打印属性

感谢您的提前帮助

3 个答案:

答案 0 :(得分:1)

此程序适用于Eclipse。

import java.awt.print.PageFormat;

import java.awt.print.PrinterJob;

public class PrinterSetup 
{

    public static void main(String[] args) throws Exception
    {
        PrinterJob pjob = PrinterJob.getPrinterJob();
        PageFormat pf = pjob.defaultPage();
        pjob.setPrintable(null, pf);

        if (pjob.printDialog()) {
          pjob.print();
        }
    }
}

答案 1 :(得分:1)

您知道如何获取所有打印机的列表,然后设置默认打印机。

确定此代码可以帮助您将要设置为默认打印机的打印机名称传递给“MYPRINTER”。将其替换为打印机名称。

PrinterJob pj = PrinterJob.getPrinterJob();
    PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
    System.out.println("Number of printers configured: " + printServices.length);
    for (PrintService printer : printServices) {
        System.out.println("Printer: " + printer.getName());
        if (printer.getName().equals("***MYPRINTER***")) {
            try {
                pj.setPrintService(printer);
            } catch (PrinterException ex) {
            }
        }
    }

答案 2 :(得分:0)

我做了一个变通办法来设置操作系统默认打印机。这个适用于Windows,它基本上执行cmd命令,该命令会在执行打印代码之前设置默认打印机:

Desktop desktop = null
if (Desktop.isDesktopSupported()) {
desktop = Desktop.getDesktop()
    desktop.print(file)
 }

这是我的职能:

public static boolean setDefaultPrinter(String printerName) {
    String defaultPrinterSetter = "wmic printer where name='"+ printerName +"' call setdefaultprinter";
    try {
        setDefaultPrinterProcess = Runtime.getRuntime().exec("cmd /c start cmd.exe /C " + defaultPrinterSetter);
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

您需要做的就是将打印机名称传递给此函数,它将成为默认打印机。

这是一个获取所有可用打印机服务列表的函数:

public static ArrayList<PrintService> availablePrinters() {
    PrintService[] services = PrinterJob.lookupPrintServices();
    ArrayList<PrintService> allServices = new ArrayList<>();

    for (PrintService myService : services) {
        allServices.add(myService);
    }
    return allServices;
}

我假设您想在组合框或其他供用户选择的列表中添加列表。它应该像这样

    ArrayList<PrintService> availableServices = availablePrinters();
    System.out.println("All printers list:");
    for (PrintService myService : availableServices) {
        myCombo.getItems().add(myService.getName());
        System.out.println(myService.getName());
    }