Печать на нестандартных размерах бумаг

0
29 май 2015 12:28
Коллеги, с печатью столкнулся в первый раз и застопорился на вроде бы простой задачке:

Есть принтер для печати на пластиковых карточках (zebra zxp series 1), размер карточки стандартный (86mm*54mm)
Есть макет изображения(1016*638), на который я программно вставляю некие данные.
Далее необходимо распечатать это на принтере.

Печатаю, использую код как в tutorial, вот кусок:
                Graphics2D g2d = (Graphics2D) graphics;
                g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
                g2d.drawImage(img, 0, 0, null);

но при этом получаю на карточке кусок изображения из правого-верхнего угла макета (размер макета больше размера карточки и влезает только кусок макета), как собственно "ужать" макет до размера карты?

Если печатаю тот же макет с помощью "Средства просмотра фотографий Windows", то печатается всю как нужно, макет полностью ложится на карту.
Как победить?)

Ответов: 1

1
25 июн 2015 12:08
В общем проблема решается следующим кодом:
        FileInputStream fis = new FileInputStream(file); // изображение для печати
        Doc doc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.JPEG, null);

        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); //задаем параметры
        aset.add(new Copies(1));
        aset.add(OrientationRequested.LANDSCAPE);

        //указываем интересующие нас размеры, а findMedia находит наиболее подходящий, причем при конкретно этих размерах
        //находится формат ISO-B8, который имеет размеры 68*88, однако на моей карте изображение печатается нормально.

        aset.add(MediaSize.findMedia(54, 86, Size2DSyntax.MM));   
                                                                                             
        DocPrintJob job = printService.createPrintJob();
        job.print(doc, aset);
        fis.close();
Модераторы: Нет
Сейчас эту тему просматривают: Нет