当前位置: 首页 > 面试题库 >

找不到打印机服务?

赫连淳
2023-03-14
问题内容

当我调试该程序时,服务数组为空?

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

问题答案:

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

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

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

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


 类似资料:
  • 我们希望打印到连接在apache运行的POS打印机上。由于应用程序的设计和部署,打印应该从服务器上完成(它应该检测订单并发送到不同的打印机和不同格式的打印...账单,厨房订单,等等...)。出于这个原因和其他原因(例如,从iPad访问应用程序),我们放弃了像QZ-Print applet这样的选项,并需要直接在服务器端打印。 提前谢了。

  • 我正在使用Epson ePOS打印机TM-T20,我已经运行了SDK示例并且它可以工作,但是,我正在尝试编写一个小型应用程序进行打印。 打印机已成功找到,数据已成功发送,但未打印。如果有人能帮忙,我会很感激的。 这是我的代码: 显示 这是我的主要活动

  • 问题内容: Java中有一种简单的方法可以执行以下操作吗? 连接到打印机(将是本地打印机,并且是连接到机器的唯一打印机)。 在2个不同的打印机纸盘中打印2页的页面。 获取当前的打印队列计数,即我有100项要打印的项目和34项当前已打印,则打印机队列现在应显示为66。 问题答案: 一些快速提示: 从Java打印:请参阅基本打印程序 打印作业的状态:您可以使用PrintJobListener获得一些有

  • 我需要发送一个pdf文件打印在一个网络应用程序的服务器端,打印机完全支持pdf打印等,它是网络以及服务器。pdf也存储在服务器上。 我尝试的是点击一个按钮,打印出pdf文件,目前我有以下代码: 但我有几个问题,我如何将pdf放入输入流以打印出来,我可以选择诸如双面打印之类的选项,以及如何从JSF web应用程序中调用它 谢谢

  • 我在标签打印机上打印时遇到了问题。下面的代码在一个上打印4个“标签”(附标签图片)。 下面的代码打印到兄弟QL-500标签打印机上。它打印到3.5"乘1.1"标签上。 如果有人能帮我更好地理解代码,那也太好了。 下面是它打印的内容:

  • 问题内容: 我已经将内存中的Postscript代码/数据(?)(在Java Tomcat webapp中)直接发送到联网的PS打印机。有没有一种简单的方法(即只是弹出一个端口并发送文本)来打印此内容,而绕过所有特定于O / S的驱动程序和内容(并希望甚至不需要额外的jar)?示例代码的链接显示了如何执行此操作? 谢谢戴夫 问题答案: 在目标打印机的LPR端口上打开一个TCP套接字。 发送您的数据