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.PDFthat returns aDocFlavorobject. - Use
PrintServiceLookup.lookupDefaultPrintService()to locate the default print service for this environment. - Use
createPrintJob()to create and return aDocPrintJobcapable 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
PrintRequestAttributeSetusingHashPrintRequestAttributeSet. - 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