Java by API/javax.print/PrintService

Материал из Java эксперт
Перейти к: навигация, поиск

PrintService: addPrintServiceAttributeListener(PrintServiceAttributeListener listener)

   <source lang="java">
 

import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.attribute.Attribute; import javax.print.event.PrintServiceAttributeEvent; import javax.print.event.PrintServiceAttributeListener; public class Main {

 public static void main(String[] argv) throws Exception {
   PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);
   for (int i = 0; i < services.length; i++) {
     services[i].addPrintServiceAttributeListener(new MyPrintServiceAttributeListener());
   }
 }

} class MyPrintServiceAttributeListener implements PrintServiceAttributeListener {

 public void attributeUpdate(PrintServiceAttributeEvent psae) {
   PrintService service = psae.getPrintService();
   Attribute[] attrs = psae.getAttributes().toArray();
   for (int i = 0; i < attrs.length; i++) {
     String attrName = attrs[i].getName();
     String attrValue = attrs[i].toString();
   }
 }

}


 </source>
   
  
 
  



PrintService: createPrintJob()

   <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>
   
  
 
  



PrintService: getDefaultAttributeValue(Class<? extends Attribute> arg0)

   <source lang="java">
 

import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.lang.reflect.Array; import javax.print.DocFlavor; import javax.print.StreamPrintService; import javax.print.StreamPrintServiceFactory; import javax.print.attribute.Attribute; 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);
   Class[] cats = service.getSupportedAttributeCategories();
   for (int j = 0; j < cats.length; j++) {
     Attribute attr = (Attribute) service.getDefaultAttributeValue(cats[j]);
     if (attr != null) {
       String attrName = attr.getName();
       String attrValue = attr.toString();
       Object o = service.getSupportedAttributeValues(attr.getCategory(), null, null);
       if (o.getClass().isArray()) {
         for (int k = 0; k < Array.getLength(o); k++) {
           Object o2 = Array.get(o, k);
           System.out.println(o2);
         }
       }
     }
   }
 }

}


 </source>
   
  
 
  



PrintService: getSupportedAttributeCategories()

   <source lang="java">
 

import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.lang.reflect.Array; import javax.print.DocFlavor; import javax.print.StreamPrintService; import javax.print.StreamPrintServiceFactory; import javax.print.attribute.Attribute; 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);
   Class[] cats = service.getSupportedAttributeCategories();
   for (int j = 0; j < cats.length; j++) {
     Attribute attr = (Attribute) service.getDefaultAttributeValue(cats[j]);
     if (attr != null) {
       String attrName = attr.getName();
       String attrValue = attr.toString();
       Object o = service.getSupportedAttributeValues(attr.getCategory(), null, null);
       if (o.getClass().isArray()) {
         for (int k = 0; k < Array.getLength(o); k++) {
           Object o2 = Array.get(o, k);
           System.out.println(o2);
         }
       }
     }
   }
 }

}


 </source>
   
  
 
  



PrintService: getSupportedDocFlavors()

   <source lang="java">
 

import javax.print.DocFlavor; import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.attribute.Attribute; import javax.print.attribute.PrintServiceAttributeSet; import javax.print.attribute.standard.PrinterName; public class Main {

 static public void main(String args[]) throws Exception {
   PrintService pss[] = PrintServiceLookup.lookupPrintServices(null, null);
   for (int i = 0; i < pss.length; ++i) {
     System.out.println(pss[i]);
     PrintService ps = pss[i];
     PrintServiceAttributeSet psas = ps.getAttributes();
     Attribute attributes[] = psas.toArray();
     for (int j = 0; j < attributes.length; ++j) {
       Attribute attribute = attributes[j];
       System.out.println("  attribute: " + attribute.getName());
       if (attribute instanceof PrinterName) {
         System.out.println("    printer name: " + ((PrinterName) attribute).getValue());
       }
     }
     DocFlavor supportedFlavors[] = ps.getSupportedDocFlavors();
     for (int j = 0; j < supportedFlavors.length; ++j) {
       System.out.println("  flavor: " + supportedFlavors[j]);
     }
   }
 }

}


 </source>