首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用obj-c检测打印机是否以编程方式支持双面打印

使用obj-c检测打印机是否以编程方式支持双面打印
EN

Stack Overflow用户
提问于 2013-02-17 08:36:32
回答 1查看 480关注 0票数 0

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

我已经使用如下代码获得了部分成功:

代码语言:javascript
复制
NSPrinter * printer = [NSPrinter printerWithName:pname];

[printInfo setPrinter:printer];

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

但只有当我通过NSPrintPanel捕获完整的printerConfig时,这才能起作用。我需要的是一种方法,可以检测具有特定名称的打印机是否支持双面打印,而不需要用户首先打开面板。我想为本地Mac上定义的任何打印机执行此操作。如有任何帮助,我们不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2013-02-17 09:53:36

在您的代码片段中,我怀疑将积极的status解释为表示支持是正确的。通常,任何非零值(noErr)都是某种类型的失败。

如果您确信当打印机不支持双面打印时,PMGetDuplex()会为打印设置对象返回错误,您可以尝试这种方法:使用PMCreateSession()创建会话,使用PMPrinterCreateFromPrinterID()或通过搜索从PMSessionCreatePrinterList()返回的数组来查找与您想要的任何条件匹配的代码,使用PMSessionSetCurrentPMPrinter()将会话设置为使用该打印机,使用PMCreatePrintSettings()创建打印设置对象,调用PMSessionDefaultPrintSettings()从会话初始化打印设置,仅调用PMSessionValidatePrintSettings(),然后调用d11PMPrinter >并检查返回值。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14916801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档