Mega Code Archive

 
Categories / Java Tutorial / 2D Graphics
 

Using a Printing Service

import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.InputStream; import javax.print.Doc; import javax.print.DocFlavor; import javax.print.DocPrintJob; import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.SimpleDoc; import javax.print.event.PrintJobAdapter; import javax.print.event.PrintJobEvent; public class Main {   public static void main(String[] args) throws Exception {     InputStream is = new BufferedInputStream(new FileInputStream("filename.gif"));     DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF;     PrintService service = PrintServiceLookup.lookupDefaultPrintService();     DocPrintJob job = service.createPrintJob();     Doc doc = new SimpleDoc(is, flavor, null);     PrintJobWatcher pjDone = new PrintJobWatcher(job);     job.print(doc, null);     pjDone.waitForDone();     is.close();   } } class PrintJobWatcher {   boolean done = false;   PrintJobWatcher(DocPrintJob job) {     job.addPrintJobListener(new PrintJobAdapter() {       public void printJobCanceled(PrintJobEvent pje) {         synchronized (PrintJobWatcher.this) {           done = true;           PrintJobWatcher.this.notify();         }       }       public void printJobCompleted(PrintJobEvent pje) {         synchronized (PrintJobWatcher.this) {           done = true;           PrintJobWatcher.this.notify();         }       }       public void printJobFailed(PrintJobEvent pje) {         synchronized (PrintJobWatcher.this) {           done = true;           PrintJobWatcher.this.notify();         }       }       public void printJobNoMoreEvents(PrintJobEvent pje) {         synchronized (PrintJobWatcher.this) {           done = true;           PrintJobWatcher.this.notify();         }       }     });   }   public synchronized void waitForDone() {     try {       while (!done) {         wait();       }     } catch (InterruptedException e) {     }   } }