2011-03-31 98 views
1

我使用下面的代碼,以打印作業發送到特定的打印機:Java PrintService是否忽略了PrinterUri屬性?

PrintServiceAttributeSet aset = new HashPrintServiceAttributeSet(); 
    try { 
      aset.add(new PrinterURI(new URI("ipp://hostName/printerName"))); 
     } catch (URISyntaxException e) { 
      System.out.println("URI exception caught: "+e); 
     } 
     PrintService[] services = 
      PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.POSTSCRIPT,aset); 

Strangley,我獲得了9代查詢結果(=特定主機上的所有可用的打印機) - 而只有第一結果是我正在尋找的。 我在PrintService JavaDocs和網上搜索過 - 但沒有發現任何問題。

是不是PrintServiceLookup只返回符合我的要求的打印機? (在這種情況下 - 一臺打印機)

在此先感謝!

+0

當然,我有一個解決此問題的方法:我在結果中搜索所需的打印機。但是,我仍然不明白我是如何得到超過1個答案的。我用'DocFlavor.INPUT_STREAM.POSTSCRIPT'測試了非常相同的代碼,但沒有**'PrinterUri'屬性**並得到相同的9個結果 - 看起來'PrintServiceAttributeSet'被忽略... – gamadon 2011-04-05 08:08:37

回答

0

事實證明,我使用的URI是錯誤的(但有一個有效的語法,所以沒有拋出異常)。
因此,回答我最初的問題--Java PrintService忽略了一個錯誤的屬性(與我的預期相反,如果屬性錯誤,PrintService將不返回結果)。

無論如何感謝

+0

如何正確ipp:格式,我不能訪問像\\ PSCPARKP01 \ CP_P1_OKI20_2這樣的軟件 – caeycae 2011-06-22 15:44:13