Cocoa 我怎样才能得到;“页面属性”;打印对话框中的选项?
我正在编写的程序在OSX10.5Leopard下运行。我的目标将其基本SDK和部署目标都设置为Mac OS X 10.5。启动打印时,“打印”对话框不会显示“页面属性”选项,用户可以在其中选择页面大小和方向 在Leopard下运行的其他程序显示此选项: 以下是启动打印的代码:Cocoa 我怎样才能得到;“页面属性”;打印对话框中的选项?,cocoa,printing,nsprintoperation,Cocoa,Printing,Nsprintoperation,我正在编写的程序在OSX10.5Leopard下运行。我的目标将其基本SDK和部署目标都设置为Mac OS X 10.5。启动打印时,“打印”对话框不会显示“页面属性”选项,用户可以在其中选择页面大小和方向 在Leopard下运行的其他程序显示此选项: 以下是启动打印的代码: -(void)print { NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo]; TemperaturePressurePrintView *
-(void)print {
NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
TemperaturePressurePrintView *printView = [[TemperaturePressurePrintView alloc] initWithFrequencies:frequencies];
if (printView) {
[[NSPrintOperation printOperationWithView:printView printInfo:printInfo] runOperation];
[printView release];
}
}
我需要做什么才能让页面属性显示在打印对话框中?这是一件很难搜索的事情,因为结果主要是关于使用打印面板,而不是编程。我终于找到了一条线索,其中提到了
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];
}
}
在最初的答案发布几年后,macOS Sierra似乎在设置了“NSPrintPanelShowsPageSetupAccessory”选项的面板行为中引入了一个bug。无效的值(例如规模大得离谱)会导致崩溃,而不是显示警报表 幸运的是,有一个解决办法。使用
NSPrintPanelShowsPaperSize | NSPrintPanelShowsOrientation | NSPrintPanelShowsScaling
取而代之的似乎是一个工作正常的面板。需要注意的是,此代码段是标准[myView print:nil]的替代品;操作,但它允许您首先自定义打印对话框。很好,清晰的解决方案。谢谢