import java.io.FileInputStream; 
import java.io.IOException; 

import javax.print.Doc; 
import javax.print.DocFlavor; 
import javax.print.DocPrintJob; 
import javax.print.PrintException; 
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.Chromaticity; 
import javax.print.attribute.standard.Copies; 

public class PrintTest { 
  static public void main(String args[]) throws Exception { 
    try { 
      PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); 
      pras.add(new Copies(1)); 

      PrintService pss[] = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.GIF, pras);//INPUT_STREAM.AUTOSENSE, pras); 
      pras.add(Chromaticity.MONOCHROME); 

      if (pss.length == 0) 
        throw new RuntimeException("No printer services available."); 

      PrintService ps = pss[0]; 
      for (PrintService pdf : pss){ 
    	if (pdf.getName().equals("PDFCreator")) 
    	ps=pdf; 
      } 
      System.out.println("Printing to " + ps); 

       
      DocPrintJob job = ps.createPrintJob(); 

// FileInputStream fin = new FileInputStream("C:\\YourImageFile.gif"); 
// Doc doc = new SimpleDoc(fin, DocFlavor.INPUT_STREAM.GIF, null); 
      FileInputStream fin = new FileInputStream("C:\\YourColorPDFFile.pdf"); 
      Doc doc = new SimpleDoc(fin, DocFlavor.INPUT_STREAM.AUTOSENSE, null); 

      job.print(doc, pras); 

      fin.close(); 
    } catch (IOException ie) { 
      ie.printStackTrace(); 
    } catch (PrintException pe) { 
      pe.printStackTrace(); 
    } 
  } 
} 