Force target printer in Java

前端 未结 3 1225
忘了有多久
忘了有多久 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:30

    I just solved this problem by running cmd command in Java

    static void changeWindowsDefaultPrinter(String printerName) {
        String cmdLine  = String.format("RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n \"%s\"", printerName);
        ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", cmdLine );
        builder.redirectErrorStream(true);
        Process p = null;
        try { p = builder.start(); }
        catch (IOException e) { e.printStackTrace(); }
    
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = new String();
        while (true) {
            try {
                line = r.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (line == null) { break; }
            System.out.println( "result  "  + line);
        }
    }
    

    And It's Wroked for Me :D

提交回复
热议问题