打印机停止打印纸张 - Java打印问题

3

这个类用于打印文件。我有一个JButton(在下面的代码中未显示),它运行此代码并打开打印对话框。但是,当我点击打印时,它开始打印,但如果文本没有占据整个页面,它会停止并不会从打印机中弹出。我是否遗漏了可能导致此问题的内容?

try{
        FileInputStream textStream;
        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
        textStream = new FileInputStream(testFileName);
        DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
        Doc test = new SimpleDoc(textStream, flavor, null);

        PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, aset);

        PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();

        if(services.length == 0){
            if(defaultService==null){
                System.out.println("NO PRINTERS");
            }else{
                DocPrintJob job = defaultService.createPrintJob();
                job.print(test, aset);
            }
        }else{

            PrintService service = ServiceUI.printDialog(null, 200, 200, services, defaultService, flavor, aset);


            if(service != null){
                DocPrintJob job = service.createPrintJob();
                job.print(test, aset);
            }
        }

    }catch (IOException | PrintException e){
        e.printStackTrace();
    }

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - snickers10m
没有任何错误信息。它只是停在打印机里了。我想打印其他东西(不是从我的程序中),结果它开始在打印机剩余的页面底部打印。 - camm73
我必须说,这是我听说过的打印机参与的最奇怪的行为。你有另一台打印机的访问权限或者有一个朋友可以通过他们自己的打印机运行程序吗?这听起来可能是打印机的问题,而不是Java的问题。 - snickers10m
我会尝试一下。谢谢你的帮助。 - camm73
你解决了你的问题吗? - Garrizano
1个回答

0

javax.print 和你的代码工作方式如下:

读取某些(未指定 = INPUT_STREAM.AUTOSENSE)格式的InputStream(某个文件),并将打印作业“提交”(.print)到操作系统的打印机系统。

接下来发生的事情完全取决于您的操作系统设置,例如正确安装的打印机驱动程序和打印机连接。

在您的情况下,目标队列可能不支持您尝试打印的文件格式(也称为 PDL)。即使是基于文本的 PDL 也使用 ESC 序列 进行打印机控制。Windows 和 Unix / Mac 系统有不同的方法。CUPS 可以默认处理 PDF 或 Postscript 等 PDL。

一旦 job.print() 方法结束,就由操作系统处理打印数据。要跟踪问题,您应该检查您的操作系统打印机系统。在 Unix 上可能是 CUPS


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接