2013-02-17 72 views
0

過去幾天我一直對此置若罔聞。我需要檢測打印機是否支持雙面打印。如果我捕獲通過NSPrintPanel全printerConfig檢測打印機是否使用obj-c以編程方式支持雙面打印

NSPrinter * printer = [NSPrinter printerWithName:pname]; 

[printInfo setPrinter:printer]; 

PMPrintSettings settings = printInfo.PMPrintSettings; 
PMDuplexMode pmDuplexMode = 0; 
OSStatus status = PMGetDuplex(settings, &pmDuplexMode); 
supportsDuplex = (status >= 0); 

但是,這只是工作:

我一直在使用類似的代碼了部分成功。我需要的是一種檢測具有特定名稱的打印機是否支持雙面打印而不需要用戶首先打開面板的方法。我想如果在本地Mac上定義任何打印機。任何幫助表示讚賞!

回答

0

在你的代碼片段中,我懷疑解釋正數status表示支持是正確的。一般來說,除零之外的任何值(noErr)都是某種失敗。

如果您確信PMGetDuplex()的打印設置對象的時候,打印機不支持雙面打印,你可以試試這個方法返回一個錯誤:與PMCreateSession()創建一個會話,獲得PMPrinter使用PMPrinterCreateFromPrinterID()或通過搜索陣列從PMSessionCreatePrinterList()返回,其中匹配您需要的任何標準,將會話設置爲使用該打印機使用PMSessionSetCurrentPMPrinter(),創建一個打印設置對象PMCreatePrintSettings(),請撥打PMSessionDefaultPrintSettings()初始化會話中的打印設置,撥打電話PMSessionValidatePrintSettings(),然後致電PMGetDuplex()並檢查返回值。

也許值得嘗試使用PMSetDuplex()設置雙工模式,並檢查返回碼,並可能調用PMSessionValidatePrintSettings()並檢查它是否更改了該設置。