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:
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