2009-04-22 2 views
2

PersonaC30 카드 프린터를 사용하여 카드에 내 Jpanel 데이터를 인쇄하고 있습니다. 내 인쇄 방법은 종이 프린터로 잘 작동하지만 카드 프린터로 인쇄 할 때 데이터가 인쇄되지 않습니다. 그것은 외부에서 잘 인쇄되고 있지만 응용 프로그램에서는 작동하지 않습니다.Jpanel PersonaC30 카드 프린터에 인쇄

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

     } 
} 

답변

5

이 시도 :

여기 내 코드입니다. 패널의 이미지 크기를 조정하는 코드를 추가했습니다.

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

대단히 감사합니다. 도와 줘서 고마워 Emre. –