2013-08-30 34 views
2

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

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

 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等进行了修饰,所有这些都没有效果,或者根本没有打印。有没有人有任何想法,我可能会如何赶上这个过程?提前致谢!

+0

尝试在您的IDE中进行代码格式化。在Mac上,这通常通过按键:“Ctrl-Shift-F”或“Cmd-Shift-F”加速。 –

+0

噢,真好。谢谢,不知道'回合!对于上面的代码的丑陋状态道歉;) –

回答

0

检查如何检测到文档。出于某种原因,它可能会被转换为光栅/图形模式。此外,使textStream缓冲。像在

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

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

+0

这可能是有道理的。打印输出最终收到后,打印出来非常干净,就好像它是一张高分辨率图像,而不是记事本中的东西。然而,我是一个总noob - 我怎么才能找出文件上使用的检测方法? –