Imprimir PDFViews fora da tela

Eu tenho uma situação onde eu quero imprimir um PDF de várias páginas. Embora eu pudesse usar as classes de utilitário PDFKit e / ou quartzo para obter as informações para escrever manualmente código de desenho / paginação para uma subclasse NSView, pensei que uma alternativa mais rápida seria criar um PDFView fora da tela e dizer para ele se imprimir . Quando tentei essa solução, a caixa de diálogo de impressão não desapareceu, todos os controles de configurações de impressão na metade direita da caixa de diálogo de impressão desapareceram e o aplicativo congelou.

Em seguida, escrevi um pequeno aplicativo de teste com o seguinte método que ilustra o problema. Quando o programa de teste é compilado sem a macro de pré-processador USE_PDF_VIEW definida, a exibição em branco é exibida corretamente. Se USE_PDF_VIEW for definido, o documento não será impresso, a maioria dos controles da caixa de diálogo de impressão desaparecerá e o aplicativo congelará. Embora eu tenha outras formas de atingir meu objetivo, estou curioso para saber por que esse atalho não funciona. Há algo sobre o desenho de cacau que ainda não entendi? Estou batendo no Apple Voodoo Magic (tm) nos bastidores que faz o PDFView se comportar de uma maneira completamente diferente de outros 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

}

questionAnswers(4)

yourAnswerToTheQuestion