print
Print to file with Java
In this example we are going to see how to print a document to a .ps file in Java. This is very useful when you want to create simple and easy previews of the print that the user might perform.
In order to print to a file, one should follow these steps:
- Open a new pdf file to print using
BufferedInputStream(new FileInputStream("myfile.pdf"))
. - Create a PDF doc flavor using
DocFlavor.INPUT_STREAM.PDF
that returns aDocFlavor
object. - Use
PrintServiceLookup.lookupDefaultPrintService()
to locate the default print service for this environment. - Use
createPrintJob()
to create and return aDocPrintJob
capable of handling data from any of the supported document flavors. - Create a class that extends
PrintJobAdapter.
- and override printJobCompleted. Then register a listener to the print job to get notified when the job is complete using.
- Set up the
PrintRequestAttributeSet
usingHashPrintRequestAttributeSet
. - Use
attributes.add(new Destination(new java.net.URI("file:C:/myfile.ps")))
to set the destination document.
Let’s see the code:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | 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.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet; import javax.print.attribute.standard.Destination; import javax.print.event.PrintJobAdapter; import javax.print.event.PrintJobEvent; public class PrintToFileWithJava { 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 ); // set up the attributes PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet(); attributes.add( new Destination( new java.net.URI( "file:C:/myfile.ps" ))); // Print a document with the specified job attributes. printJob.print(doc, attributes); 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 print to file with Java.
Hi i implemented this code , but this throws an invalid flavor Exception, could you please reply if possible