print
Use Printing Service in Java
In this example we are going to see how to use streaming printing services in a Java Desktop Application. This is very usefull when you wanto to handle print jobs inside your application.
It’s very easy to use streaming printing services in Java. All you have to do is:
- Open a pdf file using
new BufferedInputStream(new FileInputStream("myfile.pdf"))
. - Create a PDF
DocFlavor
. - Locate factories for print services that can be used with a print job to output a stream of data in the PDF format using
StreamPrintServiceFactory.lookupStreamPrintServiceFactories
. - Get a service that can print to the specified output stream using
getPrintService
. - Create a new DocPrintJob using
service.createPrintJob()
. - Print a document with the specified job attributes with
printJob.print(doc, null)
.
Let’s see the code:
package com.javacodegeeks.snippets.desktop; 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 UsePrintingServiceInJava { private static boolean jobRunning = true; public static void main(String[] args) throws Exception { // Open the image file InputStream is = new BufferedInputStream(new FileInputStream("myfile.pdf")); // create a PDF doc flavor DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF; // Locate the default print service for this environment. PrintService service = PrintServiceLookup.lookupDefaultPrintService(); // Create and return a PrintJob capable of handling data from // any of the supported document flavors. DocPrintJob printJob = service.createPrintJob(); // register a listener to get notified when the job is complete printJob.addPrintJobListener(new JobCompleteMonitor()); // Construct a SimpleDoc with the specified // print data, doc flavor and doc attribute set. Doc doc = new SimpleDoc(is, flavor, null); // Print a document with the specified job attributes. printJob.print(doc, null); while (jobRunning) { Thread.sleep(1000); } System.out.println("Exiting app"); is.close(); } private static class JobCompleteMonitor extends PrintJobAdapter { @Override public void printJobCompleted(PrintJobEvent jobEvent) { System.out.println("Job completed"); jobRunning = false; } } }
This was an example on how to use Printing Service in Java.