首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有面板的NSPrintOperation上设置打印机特定选项

在没有面板的NSPrintOperation上设置打印机特定选项
EN

Stack Overflow用户
提问于 2011-10-05 03:01:46
回答 1查看 1.5K关注 0票数 1

这个问题时断时续困扰着我大约一年,我想也许其他人也会遇到类似的情况。

目标:MacOSX10.6-7上的,使用定义的分辨率和“高速”设置将多个NSViews打印到EPSON Stylus Pro 4880打印机,而不显示打印面板。

当前情况:我可以为每个NSView创建成功的NSPrintOperations,但是如果我没有显示打印面板,则似乎使用了打印机的默认分辨率,这对于我的需要来说太高了,而且速度太慢。

到目前为止我有最好的解决方案:,我已经尝试显示打印面板和定义一个Mac‘预设’,它已经启用了正确的打印分辨率和高速设置。这里的缺点是Mac预置覆盖了我通过NSCopies设置的拷贝数,这是一个问题。当然,另一个困难是总是有人每天按几千次“OK”按钮。

我要去的地方

  • 运行其面板时,它必须在某个地方设置特定于爱普生的打印机设置,但我找不到保存它的位置。它们似乎没有在[NSPrintInfo printSettings].
  • I中设置,而是查看了打印机的PPD,但是我在任何地方都找不到高速设置,而且在打印时,在PPD中定义的默认分辨率实际上并不是默认的。看起来爱普生有他们自己的驱动程序设置,这些设置不是从我的PPD中提取的,我也不知道如何设置他们使用打印面板运行manually.
  • Basically,并预先设置覆盖所有设置,包括那些我不想覆盖的设置。在没有打印面板的情况下运行它时,所有的设置都是默认的,这不是我想要的。有人能指出我在这两者之间找到解决方案的正确方向吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-25 05:10:09

不幸的是,这是我迄今找到的最好的解决方案,尽管我不愿称之为“最佳”,甚至是“解决方案”。回到这里:运行带有面板的操作,然后以编程方式“单击”Print按钮。

代码语言:javascript
复制
[op runOperationModalForWindow: self.window delegate: self didRunSelector: nil contextInfo: nil];
NSPanel *panel = (NSPanel*)self.window.attachedSheet;
for (NSView *view in ((NSView*)panel.contentView).subviews)
{
    if (view.class == [NSButton class])
    {
        NSButton *button = (NSButton*)view;
        if ([button.title isEqualToString: @"Print"])
            [button performClick: self];
    }
}

代码语言:javascript
复制
op.runOperationModalForWindow(window, delegate: nil, didRunSelector: nil, contextInfo: nil)
(window.attachedSheet?.contentView.subviews.filter({ $0 is NSButton }) as [NSButton]).filter({ $0.title == "Print" }).first?.performClick(self)

缺点显然是需要一个窗口,而我希望将其作为一个无头服务器应用程序运行。我曾尝试过与核心印刷和PMPrinter/PMPrintSettings等一起工作,但都没有用。我唯一还没试过的就是直接和杯子说话。也许我会留着以备不时之需!

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

https://stackoverflow.com/questions/7656281

复制
相关文章

相似问题

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