Java by API/javax.print/DocPrintJob
DocPrintJob: addPrintJobListener(PrintJobListener listener)
<source lang="java">
import java.io.FileInputStream; 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.DocAttributeSet; import javax.print.attribute.HashDocAttributeSet; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet; import javax.print.event.PrintJobAdapter; import javax.print.event.PrintJobEvent; import javax.print.event.PrintJobListener; public class Main {
public static void main(String args[]) throws Exception { String filename = args[0]; DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF; PrintService printService = PrintServiceLookup .lookupDefaultPrintService(); DocPrintJob job = printService.createPrintJob(); PrintJobListener listener = new PrintJobAdapter() { public void printDataTransferCompleted(PrintJobEvent e) { System.out.println("Good-bye"); System.exit(0); } }; job.addPrintJobListener(listener); PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); FileInputStream fis = new FileInputStream(filename); DocAttributeSet das = new HashDocAttributeSet(); Doc doc = new SimpleDoc(fis, flavor, das); job.print(doc, pras); Thread.sleep(10000); }
}
</source>
DocPrintJob: getAttributes()
<source lang="java">
import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.OutputStream; import javax.print.DocFlavor; import javax.print.DocPrintJob; import javax.print.StreamPrintService; import javax.print.StreamPrintServiceFactory; import javax.print.attribute.Attribute; import javax.print.attribute.HashPrintJobAttributeSet; import javax.print.attribute.PrintJobAttributeSet; import javax.print.attribute.standard.JobMediaSheetsCompleted; import javax.print.event.PrintJobAttributeEvent; import javax.print.event.PrintJobAttributeListener; public class Main {
public static void main(String[] argv) throws Exception { OutputStream fos = new BufferedOutputStream(new FileOutputStream("filename.ps")); DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF; StreamPrintServiceFactory[] factories = StreamPrintServiceFactory .lookupStreamPrintServiceFactories(flavor, DocFlavor.BYTE_ARRAY.POSTSCRIPT.getMimeType()); StreamPrintService service = factories[0].getPrintService(fos); DocPrintJob job = service.createPrintJob(); PrintJobAttributeSet set = new HashPrintJobAttributeSet(job.getAttributes()); set.add(new JobMediaSheetsCompleted(0)); job.addPrintJobAttributeListener(new MyPrintJobAttributeListener(), set); }
} class MyPrintJobAttributeListener implements PrintJobAttributeListener {
public void attributeUpdate(PrintJobAttributeEvent pjae) { Attribute[] attrs = pjae.getAttributes().toArray(); for (int i = 0; i < attrs.length; i++) { String attrName = attrs[i].getName(); String attrValue = attrs[i].toString(); } }
}
</source>
DocPrintJob: print(Doc doc, PrintRequestAttributeSet attributes)
<source lang="java">
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.Copies; public class PrintImage {
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); if (pss.length == 0) throw new RuntimeException("No printer services available."); PrintService ps = pss[0]; System.out.println("Printing to " + ps); DocPrintJob job = ps.createPrintJob(); FileInputStream fin = new FileInputStream("YOurImageFileName.PNG"); Doc doc = new SimpleDoc(fin, DocFlavor.INPUT_STREAM.GIF, null); job.print(doc, pras); fin.close(); } catch (IOException ie) { ie.printStackTrace(); } catch (PrintException pe) { pe.printStackTrace(); } }
}
</source>