java printerjob пейзаж пустое пространство

В настоящее время у меня есть проблема с моей принтерной работой, она отлично работает для портретных изображений, но для пейзажных изображений она обрезает часть изображения и вместо этого заполняет пустое пространство.

Это мой код

РЕДАКТИРОВАТЬ

PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
BufferedImage bufferedImage = ImageIO.read(new File("house.jpg"));

boolean isLandscape = bufferedImage.getWidth() > bufferedImage.getHeight();
PrinterJob printerJob = PrinterJob.getPrinterJob();
printerJob.setPrintService(printService);
printerJob.setCopies(copies);

PageFormat pageFormat = printerJob.defaultPage();
pageFormat.setOrientation(isLandscape ? PageFormat.LANDSCAPE : PageFormat.PORTRAIT);

Paper paper = new Paper();
paper.setSize(pageFormat.getWidth(), pageFormat.getHeight());
paper.setImageableArea(0.0, 0.0, paper.getWidth(), paper.getHeight());

pageFormat.setPaper(paper);

printerJob.setPrintable(new Printable(){
   @Override
   public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException{
       if (pageIndex == 0) {
          Graphics2D g2 = (Graphics2D)graphics;
          double xScale = 1;
          double xTranslate = 0;
          double yScale = 1;
          double yTranslate = 0;
          double widthScale = (pageFormat.getImageableWidth() / bufferedImage.getWidth()) * xScale;
          double heightScale = (pageFormat.getImageableHeight() / bufferedImage.getHeight()) * yScale;

          AffineTransform affineTransform = AffineTransform.getScaleInstance(widthScale, heightScale);
          affineTransform.translate(xTranslate, yTranslate);

          g2.drawRenderedImage(bufferedImage, affineTransform);
          g2.translate((int)pageFormat.getImageableX(), (int)pageFormat.getImageableY());

          return PAGE_EXISTS;
       }else return NO_SUCH_PAGE;
   }
}, pageFormat);

printerJob.print();

Это позволяет мне печатать портретные снимки в соответствии с заданной бумагой и без границ (подгонка к бумаге), мне нужно сделать то же самое для пейзажных снимков, пожалуйста.

Это примеры того, что происходит, когда я пытаюсь использовать портретное и ландшафтное изображение, чтобы вы поняли, что я имею в виду. Изображения должны всегда соответствовать размеру бумаги и без полей, который в этом случае составляет 10x15 см,

Портретное изображение:

Пейзажное изображение:

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

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