打印机服务未找到?

问题描述:

当我调试这个程序的服务数组是空的?打印机服务未找到?

import java.io.FileInputStream; 
    import java.io.FileNotFoundException; 

    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; 
    import javax.print.attribute.standard.MediaSize; 

    import javax.print.attribute.standard.Sides; 


    public class PrintFileWithSpec { 


     public static void printFile(String filename){ 

     FileInputStream psStream=null; 
     try { 
      psStream = new FileInputStream(filename); 
     } catch (FileNotFoundException ffne) { 
     } 
     if (psStream == null) { 
      return; 
     } 

     DocFlavor psInFormat = DocFlavor.INPUT_STREAM.POSTSCRIPT; 
     Doc myDoc = new SimpleDoc(psStream, psInFormat, null); 
     PrintRequestAttributeSet aset = 
      new HashPrintRequestAttributeSet(); 
     aset.add(new Copies(5)); 
     //aset.add(MediaSize.ISO_A4); 
     aset.add(Sides.DUPLEX); 
     PrintService[] services = 
      PrintServiceLookup.lookupPrintServices(psInFormat, aset); 
     if (services.length > 0) { 
      DocPrintJob job = services[0].createPrintJob(); 
      try 
      { 
       job.print(myDoc, aset); 
      } catch (PrintException pe) {} 
     } 
     } 

     public static void main(String [] args){ 

      printFile("D:/Resume.doc"); 
     } 
    } 
+0

这似乎是在指定的属性'aset'有点限制太多 - 当我通过'null'时,它对我有用。 – AbdullahC 2011-04-21 09:35:28

+0

那我该怎么办? – Harinder 2011-04-21 09:40:33

+0

我通过null而不是一个仍然相同的问题 – Harinder 2011-04-21 09:41:41

这是因为没有找到对应于指定的DocFlavor和属性集的PrintService。可能很难找到支持PostScript的打印机,除非您的打印机硬件相当新。您可以检查什么都DocFlavors都是这样的支持:

对于定位特定的打印服务,你可以做这样的事情:

PrintService prnSvc = null; 

    /* locate a print service that can handle it */ 
    PrintService[] pservices = 
      PrintServiceLookup.lookupPrintServices(null, null); 
    if (pservices.length > 0) { 
     int ii=0; 
     while(ii < pservices.length) 
     { 
      System.out.println("Named Printer found: "+pservices[ii].getName()); 
      if (pservices[ii].getName().endsWith("YourPrinterName")) { 
       prnSvc = pservices[ii]; 
       System.out.println("Named Printer selected: " + pservices[ii].getName() + "*"); 
       break; 
      } 
      ii++; 
     } 
+0

我得到了docFlavor的以下输出,所以我的打印输出.txt,.pdf,doc等?图像/ GIF 图像/ GIF 图像/ GIF 图像/ JPEG 图像/ JPEG 图像/ JPEG 图像/ PNG 图像/ PNG 图像/ PNG 应用程序/ x-java的JVM-本地objectref 应用/ x-java-jvm-local-objectref application/octet-stream application/octet-stream application/octet-stream – Harinder 2011-04-25 05:23:59

+0

请看看发生的事情.http://stackoverflow.com/q/5775740/689853 – Harinder 2011-04-25 06:13:36