【问题标题】:How do I get "Page Attributes" option in Cocoa print dialog?如何在 Cocoa 打印对话框中获得“页面属性”选项?
【发布时间】:2012-01-12 18:56:16
【问题描述】:

我正在编写的程序在 OS X 10.5 Leopard 下运行。我的目标将其基本 SDK 和部署目标都设置为 Mac OS X 10.5。当我开始打印时,我的打印对话框不显示页面属性选项,用户可以在其中选择页面大小和方向。

在 Leopard 下运行的其他程序会显示此选项:

这是启动打印的代码:

-(void)print {
    NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
    TemperaturePressurePrintView *printView = [[TemperaturePressurePrintView alloc] initWithFrequencies:frequencies];
    if (printView) {
        [[NSPrintOperation printOperationWithView:printView printInfo:printInfo] runOperation];
        [printView release];
    }
}

我需要做什么才能让页面属性显示在我的打印对话框中?

【问题讨论】:

    标签: cocoa printing nsprintoperation


    【解决方案1】:

    这是一件很难搜索的事情,因为结果主要是关于使用打印面板,而不是编程。我终于找到了一条线索on Cocoabuilder,它提到了NSPrintPanelOptions 和NSPrintPanel 的-setOptions: 方法。

    这段代码完成了我所需要的:

    -(void)print {
        NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
        TemperaturePressurePrintView *printView = [[TemperaturePressurePrintView alloc] initWithFrequencies:frequencies];
        if (printView) {
            NSPrintOperation *op = [NSPrintOperation printOperationWithView:printView printInfo:printInfo];
            [[op printPanel] setOptions:[[op printPanel] options] | NSPrintPanelShowsPageSetupAccessory];
            [op runOperation];
            [printView release];
        }
    }
    

    【讨论】:

    • 重要的是要注意这个 sn-p 是标准 [myView print:nil] 的替代品;操作,除了它允许您首先自定义打印对话框。伟大的,明确的解决方案。谢谢!
    【解决方案2】:

    在最初的答案之后几年,macOS Sierra 似乎已经在设置了“NSPrintPanelShowsPageSetupAccessory”选项的面板的行为中引入了一个错误。无效值(例如非常大的比例)会导致崩溃,而不是显示警报表。

    幸运的是,有一个解决方法。使用

    NSPrintPanelShowsPaperSize | NSPrintPanelShowsOrientation | NSPrintPanelShowsScaling
    

    反而似乎导致面板工作正常。

    【讨论】:

      猜你喜欢
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      相关资源
      最近更新 更多