8

我正在编写的程序在 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];
    }
}

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

4

2 回答 2

16

这是一件很难搜索的事情,因为结果主要是关于使用打印面板,而不是编程。我终于在 Cocoabuilder上找到了一个线索,它提到了NSPrintPanelOptionsandNSPrintPanel-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];
    }
}
于 2012-01-13T18:00:49.663 回答
0

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

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

NSPrintPanelShowsPaperSize | NSPrintPanelShowsOrientation | NSPrintPanelShowsScaling

相反,似乎会导致面板正常工作。

于 2017-04-02T23:39:47.503 回答