2013-08-30 35 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 - 我怎麼才能找出文件上使用的檢測方法? –