1

我需要打印一张图片。当我设置方向时

printRequestAttributeSet.add(OrientationRequested.LANDSCAPE);

一切正常。

但是当我在以下print()方法中设置方向时Printable

public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
            if (pageIndex >= images.size()) 
                return Printable.NO_SUCH_PAGE;

            image = images.get(pageIndex);
            // if image width>height --> Landscape, else --> Protrait
            if (image.getWidth(null) > image.getHeight(null)) 
                pageFormat.setOrientation(PageFormat.LANDSCAPE);
            else 
                pageFormat.setOrientation(PageFormat.PORTRAIT);

            graphics2D = (Graphics2D) graphics;
            graphics.drawImage(image, 0, 0, image.getWidth(null), image.getHeight(null),   null);

            return PAGE_EXISTS;
};

它不适用于第一页。即它以横向模式打印除第一页之外的所有页面。

4

2 回答 2

4

当您已经尝试打印页面时,您无法更改方向。

如果您需要提供许多具有不同方向的页面,您将需要查看BookPageable接口,请参阅Java中的打印示例。

您唯一的其他解决方案是将图像旋转Printable,这充其量是很麻烦的。

ps - 打印很有趣......当它工作时;)

于 2012-08-30T11:25:06.480 回答
0

pf.setOrientation(PageFormat.LANDSCAPE)打电话前的地方printJob

前任。

if(pay_type.getSelectedItem().equals("EMI"))
  {
      EMI();
  }
  else{
       validation();  
  }
   PrinterJob job = PrinterJob.getPrinterJob();
     job.setPrintable((Printable) this);
     boolean ok = job.printDialog();
     if (ok) {
         try {
             //here set page oriatetion
              job.print();
         } catch (PrinterException ex) {
          /* The job did not successfully complete */
         }
     }
于 2018-03-09T19:36:50.903 回答