【问题标题】:Detect if printer support duplex programmatically using obj-c使用 obj-c 以编程方式检测打印机是否支持双面打印
【发布时间】:2013-02-17 00:36:31
【问题描述】:

在过去的几天里,我一直被这件事难住了。我需要检测打印机是否支持双面打印。

我使用如下代码取得了部分成功:

NSPrinter * printer = [NSPrinter printerWithName:pname];

[printInfo setPrinter:printer];

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

但这只有在我通过 NSPrintPanel 捕获完整的打印机配置时才有效。我需要一种方法来检测具有特定名称的打印机是否支持双面打印,而无需用户首先打开面板。如果在本地 Mac 上定义的任何打印机,我想这样做。任何帮助表示赞赏!

【问题讨论】:

    标签: objective-c printing duplex


    【解决方案1】:

    在您的代码 sn-p 中,我怀疑将积极的 status 解释为表示支持是否正确。通常,除零 (noErr) 以外的任何值都是某种故障。

    如果您确信在打印机不支持双面打印时PMGetDuplex() 会为打印设置对象返回错误,您可以尝试以下方法:使用PMCreateSession() 创建会话,使用@ 获取PMPrinter 987654326@ 或通过搜索从PMSessionCreatePrinterList() 返回的数组来匹配您想要的任何条件,使用PMSessionSetCurrentPMPrinter() 设置会话以使用该打印机,使用PMCreatePrintSettings() 创建一个打印设置对象,调用PMSessionDefaultPrintSettings() 来初始化从会话中打印设置,调用PMSessionValidatePrintSettings() 只是为了更好地衡量,然后调用PMGetDuplex() 并检查返回值。

    还可能值得尝试使用PMSetDuplex() 设置双工模式并检查返回码,并可能调用PMSessionValidatePrintSettings() 并检查它是否更改了该设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 2012-12-19
      相关资源
      最近更新 更多