2012-01-12 14 views
8

El programa que estoy escribiendo se ejecuta en OS X 10.5 Leopard. Mi objetivo tiene su Base SDK y su Destino de implementación configurados en Mac OS X 10.5. Cuando inicio la impresión, el cuadro de diálogo de impresión no muestra la opción Atributos de página en la que el usuario puede seleccionar el tamaño y la orientación de la página.¿Cómo obtengo la opción "Atributos de página" en el diálogo de impresión de Cocoa?

No Page Attributes

Otros programas que se ejecutan bajo Leopard sí muestran esta opción:

Yes Page Attributes

Aquí está el código que inicia la impresión:

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

¿Qué tengo que hacer para conseguir ¿Atributos de página para mostrar en mi cuadro de diálogo de impresión?

Respuesta

16

Esto fue algo difícil de buscar porque los resultados se basaban principalmente en utilizar el panel de impresión, no en programar uno. Finalmente encontré una pista on Cocoabuilder donde menciona el método NSPrintPanelOptions y NSPrintPanel-setOptions:.

Este código logra lo que necesito:

-(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

importante tener en cuenta que este fragmento es un reemplazo directo para el estándar [myView print: nil]; operación, excepto que le permite personalizar primero el diálogo de impresión. Gran solución clara. ¡Gracias! –

0

Es un par de años después de la respuesta original y MacOS Sierra parece haber introducido un error en el comportamiento de los paneles que tienen activada la opción 'NSPrintPanelShowsPageSetupAccessory'. Los valores no válidos, como una escala ridículamente grande, provocan bloqueos en lugar de mostrar una hoja de alerta.

Afortunadamente hay una solución. Utilizando

NSPrintPanelShowsPaperSize | NSPrintPanelShowsOrientation | NSPrintPanelShowsScaling 

parece que da como resultado un panel que funciona bien.

Cuestiones relacionadas