2012-11-22 41 views
2

我想發送一個PDF/DOC/ODT文件到使用javax.print連接到LAN的打印機,但它甚至不會將作業發送到打印隊列。我試圖打印「正常」文件(使用Adobe Reader/Open Office)並且工作完美,因此打印機連接良好。我也嘗試從代碼發送到虛擬打印機(PDFCreator),它工作。發送PDF文件到網絡打印機的Java

這裏是我正在使用的代碼:

public Boolean Imprimir (String filePath){ 
    Boolean correct = true; 

    FileInputStream psStream = null; 
    try { 
     psStream = new FileInputStream(filePath); 
    } catch (FileNotFoundException ex) { 
     ex.printStackTrace(); 
     correct = false; 
    } 
    if (psStream != null) { 

     DocFlavor psInFormat = DocFlavor.INPUT_STREAM.AUTOSENSE; 
     Doc myDoc = new SimpleDoc(psStream, psInFormat, null);  
     PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();    
     PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset); 

     PrintService myPrinter = null; 
     for (int i = 0; i < services.length; i++){ 
      String svcName = services[i].toString();    

      if (svcName.contains("Xerox")){ 
       myPrinter = services[i];      
       break; 
      } 
     } 

     if (myPrinter != null) {    
      DocPrintJob job = myPrinter.createPrintJob(); 
      try{      
       job.print(myDoc, aset); 
      } 
      catch(PrintException ex){ 
       ex.printStackTrace(); 
       correct = false; 
      } 
     } else { 
      System.out.println("No printer services found"); 
      correct = false; 
     } 
    } 
    else{ 
     correct = false; 
    } 

    return correct; 
} 

打印機使用LPR協議連接。

在此先感謝

編輯:我也嘗試使用jLpr,如其他職位(Java printing directly to a Postscript network printer)建議。它也沒有工作,但沒有錯誤信息,作業沒有出現在打印機的隊列中。

+0

我發現問題可能是打印機使用LPR協議連接。我嘗試將打印作業發送到與RAW協議連接的打印機,並且工作正常。我不會回答這個問題,因爲我仍然不知道如何處理LPR協議。 – Joel

+0

你解決了你的問題嗎?你介意分享這個解決方案嗎?謝謝 –

回答

-2

您使用的是什麼Adobe Reader版本?可能是Adobe Reader安全問題,具體取決於其版本。

Regards

相關問題