从Java打印喷墨速度非常慢

时间:2013-08-30 00:21:52

标签: java performance printing delay

我正在尝试将一个非常简单的.txt文件输出到HP Photosmart喷墨打印机。当按下UI中的按钮时,将发出打印命令。它有效,但灾难性地缓慢。打印机会在几秒钟内取出纸张并在其屏幕上显示“打印”,但在打印实际发生前五分钟。它必须是代码中的内容,因为来自其他程序的其他打印任务,即使在打印相同的.txt文件时,也会以正常速度发生。

我的代码(仅适用于打印)如下:

     PrintRequestAttributeSet aset=new HashPrintRequestAttributeSet();
           aset.add(OrientationRequested.LANDSCAPE);
           aset.add(new Copies(1));
           aset.add(Sides.DUPLEX);
           aset.add(MediaSizeName.NA_LETTER);
           aset.add(new NumberUp(2));
           aset.add(Finishings.NONE);

                 FileInputStream textStream;
                   try{
                      textStream = new FileInputStream(file_name);
                      DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
                      Doc mydoc = new SimpleDoc(textStream, flavor, null);
          PrintService[] services=PrintServiceLookup.lookupPrintServices(flavor, aset);
          PrintService defaultService =PrintServiceLookup.lookupDefaultPrintService();
                      if(services.length == 0) {
                      if(defaultService == null) {
                              //no printer found
                      } else {
                              //print using default
                     DocPrintJob job = defaultService.createPrintJob();
                            try{
                                job.print(mydoc, aset);
                                }
                            catch(Exception err){

                                }
                               }
                               } else {
                               PrintService service = ServiceUI.printDialog(null, 200,                       200, services, defaultService, flavor, aset);
                                if (service != null){
                                DocPrintJob job = service.createPrintJob();
                                job.print(mydoc, aset);
                                      }
                                    }
                                  }
                                catch(Exception err){

                                     }

现在我最终打算在热收据打印机上使用它,我(没有任何具体原因)假设会更快,但是,即使它需要花费十分之一的时间,它也太长了。我的代码中有什么东西导致这种可怕的缓慢吗?我修改了MediaSizeName,Sides,INPUT_STREAM等,所有这些都没有效果,或者根本没有打印。有没有人知道如何加快这个过程?提前谢谢!

1 个答案:

答案 0 :(得分:0)

检查文档的检测方式。由于某种原因,它可能被转换为光栅/图形模式。此外,make textStream已缓冲。喜欢

InputStream textStream;
textStream= new BufferedInputStream( new FileInputStream(file_name) );

事实上,现在我看到你正在流式传输文件,我认为这也可能影响检测。如果可以,请尝试其他DocFlavor s。强制文本模式,无论需要什么! : - )