Imprimir PDFViews fuera de la pantalla

Tengo una situación en la que quiero imprimir un PDF de varias páginas. Si bien podría usar las clases de utilidad PDFKit y / o las funciones de cuarzo para obtener la información para escribir manualmente el código de dibujo / paginación para una subclase de NSView, pensé que una alternativa más rápida sería crear un PDFView fuera de pantalla y decirle que se imprima. . Cuando probé esta solución, el diálogo de impresión no desapareció, todos los controles de configuración de impresión en la mitad derecha del diálogo de impresión desaparecieron y la aplicación se congeló.

Luego escribí una pequeña aplicación de prueba con el siguiente método que ilustra el problema. Cuando el programa de prueba se compila sin la macro de preprocesador USE_PDF_VIEW definida, la vista en blanco se muestra bien. Si se define USE_PDF_VIEW, el documento no se imprime, la mayoría de los controles del diálogo de impresión desaparecen y la aplicación se congela. Si bien tengo otras formas de lograr mi objetivo, siento curiosidad por saber por qué este acceso directo no funciona. ¿Hay algo sobre el dibujo de cacao que todavía no entiendo? ¿Me estoy topando con Apple Voodoo Magic (tm) detrás de escena que hace que PDFView se comporte de una manera completamente diferente a otras NSViews?

- (void)printMyStuff:(id)sender {

NSPrintInfo *currInfo = [NSPrintInfo sharedPrintInfo];

#ifdef USE_PDF_VIEW


    PDFView *pdfView = [[PDFView alloc] init];
    PDFDocument *pdfDoc = [[PDFDocument alloc] initWithURL:[NSURL fileURLWithPath:@"/Users/wls/Documents/my_document.pdf"]];
    [pdfView setDocument: pdfDoc];
    [pdfView printWithInfo:currInfo autoRotate:YES];


#else

    NSView *myView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 500, 500)];
    NSPrintOperation *myop = [NSPrintOperation printOperationWithView:myView printInfo:currInfo];
    [myop runOperation];


#endif

}

Respuestas a la pregunta(4)

Su respuesta a la pregunta