2016-12-14 1 views
0

Mein Java-Thermodrucker-Code nicht in der Lage, lange Quittung (mehr als A4 Blattgröße) zu drucken. Normalerweise funktioniert es einwandfrei, aber für den Fall, dass zu viele Artikel im Einkaufswagen sind, wird ein halber Druck erzeugt. Mein Code ist unter mentioned-Java-Code nicht in der Lage, lange Quittung im Thermodrucker zu drucken

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

Bitte lassen Sie mich wissen, wie ich meinen Code lange Belegdruck erzeugen kann durch eine Korrektur oder, wenn Sie eine bessere Lösung haben, dies zu tun.

+0

Ist 'Paper' Klasse Teil einer API zur Verfügung gestellt werden, oder Sie es umgesetzt haben? – CraigR8806

+0

Es ist ein Teil API java.awt.print.Paper – 007

Antwort

0

Genau hier:

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

Sie sind ein neues Paper Objekt erstellen und nicht seine Höheneinstellung.

Hier ist ein link zur Dokumentation dieser Klasse.

Wenn ein Papier Objekt erstellen, ist es in der Verantwortung der Anwendung, um sicherzustellen, dass das Papierformat und der bedruckbaren Bereich kompatibel ist

Sie müssen die Höhe des Papiers setzen, indem paper.setSize(width, height) Aufruf oder es wird Verwenden Sie die Standardgröße-Eigenschaft.

Die Abmessungen werden in 1/72 Zoll geliefert.

So Breite und Höhe müssen in diesem Format als double s

+0

Wenn diese Lösung für Sie arbeitete, wählen Sie sie als Antwort. – CraigR8806

+0

Ich weiß über die Papierklassenmethode und ich versuche es bereits, indem ich benutzerdefinierte Höhe und Breite gebe. Aber es funktioniert nicht für mich. – 007

Verwandte Themen