When you need to test printing processes in Java, it may be easier to print to files rather than printing to a printer.
In the sample Java program below, we are finding the Microsoft XPS Document Writer, but you could find any other printer drivers installed on your machine, such as a Postscript driver or a PDF printer driver and print to it. To set the print output to be redirected to a file rather than paper, you need to use the HashPrintRequestAttribute and set the output file as a destination.
// lookup printers available on this machine
PrintService[] services = PrinterJob.lookupPrintServices();
// loop through the printers
for (int index = 0; index < services.length; index++)
// find the Microsoft XPS Document Writer
if (services[index].getName().equalsIgnoreCase("Microsoft XPS Document Writer"))
// create a new PrinterJob
PrinterJob pjob = PrinterJob.getPrinterJob();
// set the print service as the Microsoft XPS Document Writer
pjob.setPrintService(services[index]);
// create a new HashPrintRequestAttributeSet
HashPrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
// set the output file as a destination
attributes.add(new Destination(new File("c:/output.xps").toURI()));
// set the attributes to the printerjob
pjob.print(attributes);
// MyPrintable will have to be defined to implement the print method
pjob.setPrintable(new MyPrintable(), new PageFormat());
}
|
// lookup printers available on this machine
PrintService[] services = PrinterJob.lookupPrintServices();
// loop through the printers
for (int index = 0; index < services.length; index++)
// find the Microsoft XPS Document Writer
if (services[index].getName().equalsIgnoreCase("Microsoft XPS Document Writer"))
// create a new PrinterJob
PrinterJob pjob = PrinterJob.getPrinterJob();
// set the print service as the Microsoft XPS Document Writer
pjob.setPrintService(services[index]);
// create a new HashPrintRequestAttributeSet
HashPrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
// set the output file as a destination
attributes.add(new Destination(new File("c:/output.xps").toURI()));
// set the attributes to the printerjob
pjob.print(attributes);
// MyPrintable will have to be defined to implement the print method
pjob.setPrintable(new MyPrintable(), new PageFormat());