2009-06-22 3 views
0

두 개의 다른 패널이 있지만 한 페이지에서 두 페이지로 보낼 필요가 있습니다. 첫 페이지는 앞면에 인쇄하고 두 번째 페이지는 뒷면에 인쇄 할 수 있습니다. 아무도 도와 줄 수 없지만 하나의 jpanel을 보내야합니다. 여기에 내 코드두 개의 Jpanel을 하나의 문서로 인쇄하기

private void printCard() { 

     PrinterJob printjob = PrinterJob.getPrinterJob(); 
     printjob.setJobName(" CARD "); 
     Printable printable = new Printable() { 
       public int print(Graphics pg, PageFormat pf, int pageNum) { 
        if (pageNum > 0) { 
         return Printable.NO_SUCH_PAGE; 
         } 

         Dimension imageDimension = jLayeredPane2.getSize(); 
         BufferedImage bufferedImage = new BufferedImage(imageDimension.width, imageDimension.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); 

         Dimension backimage=jLayeredPane4.getSize(); 
         BufferedImage bufferedImage1 = new BufferedImage(backimage.width, backimage.height, BufferedImage.TYPE_INT_RGB); 
         jLayeredPane4.print(bufferedImage1.getGraphics()); 
         g2.drawImage(bufferedImage1, 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, 153); 
     PageFormat format = new PageFormat(); 
     format.setPaper(paper); 
     format.setOrientation(PageFormat.REVERSE_LANDSCAPE); 
     printjob.setPrintable(printable,format); 

     try { 
       printjob.print(); 
     } catch (PrinterException ex) { 
       System.out.println("Sorry No Image Found" + ex); 
     } 

감사 }

+0

작은 말 : BufferedImage.getGraphics()를 호출하면 반환 된 Graphics에 페인트를 수행 한 후에 항상 dispose()를 호출해야합니다. – akarnokd

답변

1

대신의 java.awt.print.Printable을 사용하고, 대신 java.awt.print.Pageable를 사용합니다. 이렇게하면 두 페이지를 지정하고 양면 인쇄하여 앞뒤로 인쇄 할 수 있습니다. PrinterJob에는 setPrintable()뿐만 아니라 setPageable() 함수가 있습니다. 책을 더 쉽게 사용하려면 책을 사용하고 각 페이지 당 하나씩 두 개의 Printable을 추가하십시오.

관련 문제