Как я могу получить опцию «Атрибуты страницы» в диалоге печати Какао? - PullRequest
8 голосов
/ 12 января 2012

Программа, которую я пишу, работает под OS X 10.5 Leopard. У моей цели есть базовый SDK и цель развертывания - Mac OS X 10.5. Когда я запускаю печать, в моем диалоговом окне печати не отображается параметр «Атрибуты страницы», в котором пользователь может выбрать размер страницы и ориентацию.

No Page Attributes

Другие программы, работающие под Leopard, показывают эту опцию:

Yes Page Attributes

Вот код, который запускает печать:

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

Что мне нужно сделать, чтобы атрибуты страницы отображались в моем диалоговом окне печати?

Ответы [ 2 ]

16 голосов
/ 13 января 2012

Это было непросто найти, потому что результаты в основном касались использования панели печати, а не ее программирования. Я наконец нашел подсказку на 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];
    }
}
0 голосов
/ 03 апреля 2017

Прошло несколько лет после первоначального ответа, и macOS Sierra, похоже, внесла ошибку в поведение панелей, для которых установлена ​​опция 'NSPrintPanelShowsPageSetupAccessory'. Недопустимые значения, такие как смехотворно большой масштаб, вызывают сбой вместо отображения листа с предупреждением.

К счастью, есть обходной путь. Использование

NSPrintPanelShowsPaperSize | NSPrintPanelShowsOrientation | NSPrintPanelShowsScaling

вместо этого, кажется, приводит к панели, которая работает нормально.

...