Java code not able to print long receipt in thermal printer
<p>My java thermal printer code not able to print long receipt(more than A4 sheet size). Its work fine normally, but in case where there is too much items in cart then it generate half print. My code is under mentioned-</p>

<pre><code>public PrintReceipt(Map&lt;String,String&gt; 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 &lt; 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 &gt; 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;
}
</code></pre>

<p>Please let me know how can i generate long receipt print by correcting my code or if you have any better solution to do this.</p>