2013-02-17 79 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()并检查它是否更改了该设置。