Как бы я подавил диалог печати в этом примере?

private void printCard() {

        PrinterJob printjob = PrinterJob.getPrinterJob();
        printjob.setJobName("Label");

        Printable printable = new Printable() {

                public int print(Graphics pg, PageFormat pf, int pageNum) {

                        if (pageNum > 0) {
                                return Printable.NO_SUCH_PAGE;
                        }

                        Dimension size = jLayeredPane2.getSize();
                        BufferedImage bufferedImage = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);

                        jLayeredPane2.print(bufferedImage.getGraphics());

                        Graphics2D g2 = (Graphics2D) pg;
                        g2.translate(pf.getImageableX(), pf.getImageableY());
                        g2.drawImage(bufferedImage, 0, 0, (int) pf.getWidth(), (int) pf.getHeight(), null);

                        return Printable.PAGE_EXISTS;
                }
        };

        Paper paper = new Paper();
        paper.setImageableArea(0, 0, 153, 243);
        paper.setSize(243, 154);

        PageFormat format = new PageFormat();
        format.setPaper(paper);
        format.setOrientation(PageFormat.LANDSCAPE);

        printjob.setPrintable(printable, format);
        if (printjob.printDialog() == false)
                return;

        try {
                printjob.print();
        } catch (PrinterException ex) {
                System.out.println("NO PAGE FOUND." + ex);

        }
}

1 ответ

Решение

Из того, что я вижу в вашем коде, вы звоните if (printjob.printDialog() == false), Это всегда будет пытаться показать диалоговое окно свойств собственного принтера. boolean возвращаемое значение зависит от того, нажимает ли пользователь кнопку OK или отменяет ее из диалогового окна. Если вы хотите подавить диалог, удалите это if блок, так как печать, которую вы хотите выполнить, выполняется через printjob.print() вызов.

Другие вопросы по тегам