Force target printer in Java

前端 未结 3 1221
忘了有多久
忘了有多久 2020-12-17 20:42

Is there a way to force the target printer in java, using HashPrintRequestAttributeSet ?

I don\'t want the user to be able to change the printer in the printdialog

3条回答
  •  一整个雨季
    2020-12-17 21:37

    Had to figure this out the hard way, but for the future generations, here's some of my code:

    PrintService[] printServices;
    PrintService printService;
    PageFormat pageFormat;
    
    String printerName = "Your printer name in Devices and Printers";
    
    PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
    printServiceAttributeSet.add(new PrinterName(printerName, null));
    printServices = PrintServiceLookup.lookupPrintServices(null, printServiceAttributeSet);
    
    pageFormat = new PageFormat(); // If you want to adjust heigh and width etc. of your paper.
    pageFormat = printerjob.defaultPage();
    
    PrinterJob printerjob = PrinterJob.getPrinterJob();
    
    printerjob.setPrintable(new Server(), pageFormat); // Server was my class's name, you use yours.
    
    try {
        printService = printServices[0];
        printerjob.setPrintService(printService); // Try setting the printer you want
    } catch (ArrayIndexOutOfBoundsException e) {
        System.err.println("Error: No printer named '" + printerName + "', using default printer.");
        pageFormat = printerjob.defaultPage(); // Set the default printer instead.
    } catch (PrinterException exception) {
        System.err.println("Printing error: " + exception);
    }
    
    try {
        printerjob.print(); // Actual print command
    } catch (PrinterException exception) {
        System.err.println("Printing error: " + exception);
    }
    

提交回复
热议问题