打印机服务未找到? [英] Printer services Not found?

查看:125
本文介绍了打印机服务未找到?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我调试这个程序时,服务数组是空的?

When i Debug this program the services array is empty??

 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");
        }
    }


推荐答案

这是因为找不到与指定的相对应的PrintService DocFlavor 和属性集。除非您的打印机硬件是最新的,否则可能很难找到支持PostScript的打印机。您可以检查所有DocFlavor支持的内容,如下所示:

This is because there was no PrintService found corresponding to the specified DocFlavor and Attribute Set. It may be hard to find a printer which supports PostScript unless your printer hardware is pretty up to date. You can check what all DocFlavors are supported like this:

DocFlavor[] docFalvor = prnSvc.getSupportedDocFlavors();
        for (int i = 0; i < docFalvor.length; i++) {
            System.out.println(docFalvor[i].getMimeType());
        }

要查找特定的打印服务,您可以执行以下操作:

For locating a specific Print Service you can do something like this:

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++;
        }

这篇关于打印机服务未找到?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆