package com.spun.util; import java.awt.Component; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.print.PageFormat; import java.awt.print.Paper; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import javax.swing.RepaintManager; import com.spun.util.logger.SimpleLogger; public class PrintUtils implements Printable { private Component componentToBePrinted; /***********************************************************************/ public static void printComponent(Component c) { printComponent(c, true); } /***********************************************************************/ public static void printComponent(Component c, boolean prompt) { new PrintUtils(c).print(prompt); } /***********************************************************************/ public PrintUtils(Component componentToBePrinted) { this.componentToBePrinted = componentToBePrinted; } /***********************************************************************/ public void print(boolean prompt) { PrinterJob printJob = PrinterJob.getPrinterJob(); PageFormat format = printJob.defaultPage(); Paper paper = format.getPaper(); paper.setImageableArea(18, 0, 180, 840);// Paper format for receipt printer format.setPaper(paper); printJob.setPrintable(this, format); if (!prompt || printJob.printDialog()) { try { printJob.print(); } catch (PrinterException pe) { SimpleLogger.variable("Error printing: " + pe); } } } /***********************************************************************/ public int print(Graphics g, PageFormat pageFormat, int pageIndex) { if (pageIndex > 0) { return (NO_SUCH_PAGE); } else { Graphics2D g2d = (Graphics2D) g; SimpleLogger.variable("width = " + pageFormat.getWidth()); SimpleLogger.variable("image width = " + pageFormat.getImageableWidth()); SimpleLogger.variable("getHeight() = " + pageFormat.getHeight()); g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); disableDoubleBuffering(componentToBePrinted); componentToBePrinted.paint(g2d); enableDoubleBuffering(componentToBePrinted); return (PAGE_EXISTS); } } /***********************************************************************/ public static void disableDoubleBuffering(Component c) { RepaintManager currentManager = RepaintManager.currentManager(c); currentManager.setDoubleBufferingEnabled(false); } /***********************************************************************/ public static void enableDoubleBuffering(Component c) { RepaintManager currentManager = RepaintManager.currentManager(c); currentManager.setDoubleBufferingEnabled(true); } /***********************************************************************/ /***********************************************************************/ }