2009-04-22 4 views
2

J'utilise l'imprimante de cartes PersonaC30 pour imprimer mes données Jpanel sur une carte. Ma méthode d'impression fonctionne correctement avec l'imprimante papier, mais lorsque j'imprime avec une imprimante à carte, elle n'imprime pas mes données. Il imprime bien à l'extérieur mais ne fonctionne pas avec mon application.Impression Jpanel sur l'imprimante de cartes PersonaC30

Voici mon code:

private void printCard(){ 

PrinterJob printjob = PrinterJob.getPrinterJob(); 
printjob.setJobName(" TESSCO CUSTOMER CARD "); 

printjob.setPrintable (new Printable() { 

public int print(Graphics pg, PageFormat pf, int pageNum){ 

    Paper card = pf.getPaper(); 
    // card.setImageableArea(0, 0, 153, 243); 
    card.setSize(243, 154); 
    pf.setPaper(card); 
    pf.setOrientation(PageFormat.LANDSCAPE); 

if (pageNum > 0){ 
return Printable.NO_SUCH_PAGE; 
} 
Graphics2D g2 = (Graphics2D) pg; 

g2.translate(pf.getImageableX(), pf.getImageableY()); 
g2.translate(0f, 0f); 

jLayeredPane2.paint(g2); 

return Printable.PAGE_EXISTS; 
} 
}); 
if (printjob.printDialog() == false) 
return; 

try { 
     printjob.print(); 
     } 
     catch (PrinterException ex) { 
     System.out.println("NO PAGE FOUND."+ex); 

     } 
} 

Répondre

5

essayer. J'ai ajouté du code pour redimensionner l'image du panneau.

private void printCard() { 

    PrinterJob printjob = PrinterJob.getPrinterJob(); 
    printjob.setJobName(" TESSCO CUSTOMER CARD "); 

    Printable printable = new Printable() { 

     public int print(Graphics pg, PageFormat pf, int pageNum) { 

      if (pageNum > 0) { 
       return Printable.NO_SUCH_PAGE; 
      } 

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

      return Printable.PAGE_EXISTS; 
     } 
    }; 

    Paper paper = new Paper(); 
    paper.setImageableArea(0, 0, 153, 243); 
    paper.setSize(243, 154); 

    PageFormat format = new PageFormat(); 
    format.setPaper(paper); 
    format.setOrientation(PageFormat.LANDSCAPE); 

    printjob.setPrintable(printable, format); 
    if (printjob.printDialog() == false) 
     return; 

    try { 
     printjob.print(); 
    } catch (PrinterException ex) { 
     System.out.println("NO PAGE FOUND." + ex); 

    } 
} 
+0

Merci beaucoup son travail absolument bien. Merci pour votre aide Emre. –