2009-04-22 10 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。 –