2009-06-22 4 views
0

J'ai deux panneaux différents mais j'ai besoin de les envoyer en un document sur deux pages. première page imprimée à l'avant et la seconde imprimera à l'arrière peut quelqu'un s'il vous plaît aidez-moi j'ai envoyé un jpanel mais comment envoyer deuxième avec elle. Voici mon codeImpression de deux Jpanels en un seul document

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); 
     } 

Merci }

+0

Petite remarque: Si vous appelez BufferedImage.getGraphics(), vous devez toujours appeler disposer() sur les graphiques retournés une fois que vous avez fini de peindre. – akarnokd

Répondre

1

au lieu d'utiliser un java.awt.print.Printable, utilisez java.awt.print.Pageable à la place. Cela vous permettra de spécifier deux pages, puis d'imprimer en recto verso pour obtenir le recto et le verso. PrinterJob a une fonction setPageable() ainsi qu'un setPrintable(). Pour le rendre encore plus facile, utilisez un livre et ajoutez simplement deux imprimables, un pour chaque page.

Questions connexes