Headless Printing, the easy way
[Logo]
ICEsoft.org Forums: ICEfaces, ICEmobile, ICEpdf
[Search] Search   [Recent Topics] Recent Topics   [Groups] Home Page | www.icefaces.org  [Register] Register  [Login] Login 
Headless Printing, the easy way  XML
Forum Index -> ICEpdf General
Author Message
pedrojrivera

Joined: 20/11/2008 00:00:00
Messages: 55
Offline


ICEPdf headless printing that is configurable.

Code:
 import java.awt.print.PrinterJob;
 import java.io.IOException;
 import java.util.Locale;
 
 import javax.print.PrintException;
 import javax.print.PrintService;
 import javax.print.PrintServiceLookup;
 import javax.print.attribute.HashPrintRequestAttributeSet;
 import javax.print.attribute.standard.Copies;
 import javax.print.attribute.standard.JobName;
 import javax.print.attribute.standard.MediaSizeName;
 import javax.print.attribute.standard.PageRanges;
 import javax.print.attribute.standard.PrintQuality;
 
 import org.icepdf.core.exceptions.PDFException;
 import org.icepdf.core.exceptions.PDFSecurityException;
 import org.icepdf.core.pobjects.Document;
 import org.icepdf.core.views.DocumentViewController;
 import org.icepdf.ri.common.PrintHelper;
 import org.icepdf.ri.common.SwingController;
 import org.icepdf.ri.common.views.DocumentViewControllerImpl;
 
 /**
  * Converts the PDF content into printable format
  */
 public class PrintPdf {
 
 	/**
 	 * ::Constructor()
 	 */
 	public PrintPdf() {
 
 	}
 	
 	/**
 	 * Print a PDF document
 	 */
 	public boolean printPDF(String pdf, String jobName, String printer, int copies) {
 		boolean success = false;
 		Document doc = new Document();
 		try {
 			doc.setFile(pdf);
 
             SwingController sc = new SwingController();
             DocumentViewController vc = new DocumentViewControllerImpl(sc);
             vc.setDocument(doc);
 
             HashPrintRequestAttributeSet hp = new HashPrintRequestAttributeSet();
             hp.add(new Copies(copies));
             hp.add(new JobName(jobName,Locale.getDefault()));
             hp.add(MediaSizeName.NA_LETTER);
             hp.add(PrintQuality.HIGH);
             hp.add(new PageRanges(1, doc.getNumberOfPages()));
             
             PrintHelper ph = new PrintHelper(vc, doc.getPageTree());
             ph.setupPrintService(getPrinterService(printer), hp, false);
             ph.print();
 			
 			success = true;
 			
 		} catch (PDFException e) {
 			e.printStackTrace();
 		} catch (PDFSecurityException e) {
 			e.printStackTrace();
 		} catch (IOException e) {
 			e.printStackTrace();
 		} catch (PrintException e) {
 			e.printStackTrace();
 		} finally {
 			doc.dispose();			
 		}
 		return success;
 	}
 
 	/**
 	 * Get the proper printer service, if not found
 	 * use the default printer.
 	 */
 	public PrintService getPrinterService(String printer) {
 		PrintService[] printServices = PrinterJob.lookupPrintServices();
 		PrintService printService = null;
     	int i;
     	
     	if (printer != null && printer.trim() != "") {
 	    	for (i = 0; i < printServices.length; i++) {
 	    		if (printServices[i].getName().trim().toLowerCase().
 	    			equals(printer.trim().toLowerCase())) {
 	    			printService = printServices[i];
 	    			break;
 	    		}
 	    	}
     	}
     	
     	if (printService == null) {
     		printService = PrintServiceLookup.lookupDefaultPrintService();
     	}
     	
     	return printService;
 	}
 
 }
 


Code:
 PrintPdf p = new PrintPdf();
 p.printPDF("c:/tmp/testpdf.pdf", "This is a test print job", "HP LaserJet 1150", 1);
 


You could possible add parameters to pass in page size, print range, etc.

Have fun!!

 
Forum Index -> ICEpdf General
Go to:   
Powered by JForum 2.1.7ice © JForum Team