2016-12-14 1 views
0

Java 감열 프린터 코드가 긴 영수증을 인쇄 할 수 없습니다 (A4 이상 크기). 정상적으로 작동하지만 카트에 너무 많은 항목이있는 경우 절반 인쇄물을 생성합니다. 내 코드는 제가 내 코드를 수정하여 긴 영수증 인쇄를 생성 할 수 있습니다 또는 당신이 어떤 더 나은 솔루션이있는 경우이 작업을 수행하는 방법을 알려 주시기 바랍니다 mentioned-Java 코드가 감열 프린터에서 긴 영수증을 인쇄 할 수 없습니다.

public PrintReceipt(Map<String,String> hm){ 

     /* 
      product details code.. 


     */ 


     try{ 


      input = new FileInputStream("C:/printer.properties"); 
      prop.load(input); 
      printerName=prop.getProperty("receiptPrinter"); 
      System.out.println("Printer Name "+printerName); 

       }catch(Exception exception){ 
        System.out.println("Properties file not found"); 
       } 

      PrintService[] pservices = PrintServiceLookup.lookupPrintServices(null,null); 

      for (int i = 0; i < pservices.length; i++) { 
      if (pservices[i].getName().equalsIgnoreCase(printerName)) { 
      job = PrinterJob.getPrinterJob(); 
      PageFormat pf = job.defaultPage(); 

      double margin = 1.0D; 
      Paper paper = new Paper(); 
      paper.setSize(216D, paper.getHeight()); 
      paper.setImageableArea(margin, margin, paper.getWidth() - margin * 1.5D, paper.getHeight() - margin * 1.5D); 
      pf.setPaper(paper);   
      job.setCopies(1); 
      pf.setOrientation(1); 
      job.setPrintable(this, pf); 

      try 
      { 
       job.print(); 
      } 
      catch(PrinterException ex) 
      { 
      System.out.println("Printing failed"); 

     } 
     } 
    } 
} 



public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) 
     throws PrinterException { 
    if(pageIndex > 0) 
     return 1; 


      Graphics2D g2d = (Graphics2D)graphics; 


      double width = pageFormat.getImageableWidth(); 
      double height = pageFormat.getImageableHeight();  
      g2d.translate((int) pageFormat.getImageableX(),(int) pageFormat.getImageableY()); 
      Font font = new Font("Monospaced",Font.BOLD,8);  
      g2d.setFont(font); 

      try { 
       /* 
         * Draw Image* 


         */ 
            int x=50 ;          
            int y=10;          
            int imagewidth=100; 
            int imageheight=50; 
          BufferedImage read = ImageIO.read(new File("C:/hotel.png")); 
          g2d.drawImage(read,x,y,imagewidth,imageheight,null);   //draw image 
          g2d.drawString("-- * Resturant * --", 20,y+60); 
          g2d.drawLine(10, y+70, 180, y+70);       //draw line 
           } catch (IOException e) { 
         e.printStackTrace(); 
        } 
      try{ 

       /*Draw Header*/ 


     /* 
      product details code.. 


     */ 


      /*Footer*/ 


      //end of the receipt 



      } 
      catch(Exception r){ 
       r.printStackTrace(); 
      } 


    return 0; 
} 

을 받고있다. 바로 여기

+0

으로이 형식으로 제공 될 필요가있을 것이다 또는 당신은 그것을 구현 했습니까? – CraigR8806

+0

해당 부분 API java.awt.print.Paper – 007

답변

0

:

Paper paper = new Paper(); 
paper.setSize(216D, paper.getHeight()); 

당신은 새로운 Paper 객체를 생성하고 높이를 설정하지 않습니다.

다음은이 클래스의 문서에 대한 link입니다.

종이 객체를 생성 , paper.setSize(width, height)하거나 의지를 호출하여 용지 크기 및 이미징 가능 영역은 용지의 높이를 설정해야

호환되는지 확인하기 위해 응용 프로그램의 책임입니다 기본 크기 속성을 사용하십시오.

치수는 1/72 인치로 제공됩니다.

그래서 폭과 높이 모두는 API의`Paper` 클래스 부분이 double

+0

이 솔루션이 효과가 있다면 대답으로 선택하십시오. – CraigR8806

+0

필자는 종이 클래스 방법에 대해 알고 있으며, 이미 사용자 정의 높이와 너비를 지정하여 시도하고 있습니다. 그러나 그것은 나를 위해 작동하지 않습니다. – 007

관련 문제