подгонка объекта PrinterJob к определенному формату печати BufferedImage

Я использую объект PrinterJob для того, чтобы напечатать свой Bufferedimage, у меня есть BufferedImage, который я обрабатываю и отправляю на задание принтера с форматом бумаги и т. Д., И я не могу сделать его пригодным для печати на моем карточном принтере. когда я сохраняю его на свой жесткий диск и печатаю с помощью диспетчера печати Windows, он очень хорошо печатается на принтере для карточек, но с PrinterJob он получается слишком большим и не подходит для карточки

размер карты - 86х54 мм, а размер моего буферизованного изображения - 1300х816 пикселей. Код:

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

    Printable printable = new Printable() {

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

                    if (pageNum > 0) {
                            return Printable.NO_SUCH_PAGE;
                    }
                    JLayeredPane j1 = new JLayeredPane();
                    Dimension size = j1.getSize();

                    j1.print(bi.getGraphics());

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

                    return Printable.PAGE_EXISTS;
            }
    };

    Paper paper = new Paper();
    paper.setImageableArea(0, 0, 0, 0);
    paper.setSize(1.15, 0.72);

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


    printjob.setPrintable(printable, format);

    try {
            printjob.printDialog();
            printjob.print();

    } catch (Exception eee){
            System.out.println("NO PAGE FOUND."+eee.toString());

    }

Я узнал, что paper.setSize (1.15, 0.7); в дюймах (http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/print/Paper.html) paper.setImageableArea (0, 0, 0, 0); и я не знаю об этом setImageableArea.

кто-нибудь имеет представление о текущих размерах, я сделал ошибку в расчете? Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос