00001 package edu.stanford.hci.r3.printing.types;
00002
00003 import java.io.File;
00004 import java.io.FileInputStream;
00005 import java.io.FileNotFoundException;
00006
00007 import javax.print.Doc;
00008 import javax.print.DocFlavor;
00009 import javax.print.DocPrintJob;
00010 import javax.print.PrintException;
00011 import javax.print.PrintService;
00012 import javax.print.PrintServiceLookup;
00013 import javax.print.ServiceUI;
00014 import javax.print.SimpleDoc;
00015 import javax.print.attribute.DocAttributeSet;
00016 import javax.print.attribute.HashDocAttributeSet;
00017 import javax.print.attribute.HashPrintRequestAttributeSet;
00018 import javax.print.attribute.PrintRequestAttributeSet;
00019
00020 import edu.stanford.hci.r3.printing.Printer;
00021 import edu.stanford.hci.r3.util.DebugUtils;
00022
00034 public class PostscriptPrinter extends Printer {
00035
00039 public PostscriptPrinter(PrintService serv) {
00040 super(serv);
00041 }
00042
00051 public static void printPostscriptFileToDefaultPrinter(File psFile) {
00052 final PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
00053 final DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
00054
00055 final PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
00056
00057 final PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
00058 DebugUtils.println("Starting Printing Service UI");
00059 final PrintService service = ServiceUI.printDialog(null, 200, 200, printService,
00060 defaultService, flavor, pras);
00061 if (service != null) {
00062
00063 final DocPrintJob job = service.createPrintJob();
00064 FileInputStream fis = null;
00065 try {
00066 fis = new FileInputStream(psFile);
00067 } catch (FileNotFoundException e) {
00068 e.printStackTrace();
00069 }
00070 final DocAttributeSet das = new HashDocAttributeSet();
00071 final Doc doc = new SimpleDoc(fis, flavor, das);
00072
00073 try {
00074 DebugUtils.println("Printing");
00075 job.print(doc, pras);
00076 } catch (PrintException e) {
00077 e.printStackTrace();
00078 }
00079 }
00080 }
00081 }