Drucken von PDF-Ansichten außerhalb des Bildschirms

Ich möchte ein mehrseitiges PDF drucken. Während ich die PDFKit-Dienstprogrammklassen und / oder Quarzfunktionen verwenden könnte, um die Informationen zum manuellen Schreiben von Zeichen- / Paginierungscode für eine NSView-Unterklasse abzurufen, hätte ich gedacht, dass eine schnellere Alternative darin besteht, eine PDFView außerhalb des Bildschirms zu erstellen und selbst zu drucken . Als ich diese Lösung ausprobierte, verschwand das Druckdialogfeld nicht, alle Steuerelemente für die Druckeinstellungen in der rechten Hälfte des Druckdialogfelds verschwanden und die Anwendung blieb stehen.

Ich habe dann eine winzige Testanwendung mit der folgenden Methode geschrieben, die das Problem veranschaulicht. Wenn das Testprogramm ohne das Präprozessormakro USE_PDF_VIEW kompiliert wird, wird in der leeren Ansicht eine gute Darstellung angezeigt. Wenn USE_PDF_VIEW definiert ist, wird das Dokument nicht gedruckt, die meisten Steuerelemente des Druckdialogs verschwinden und die App friert ein. Obwohl ich andere Möglichkeiten habe, mein Ziel zu erreichen, bin ich gespannt, warum diese Verknüpfung nicht funktioniert. Gibt es etwas an Cocoa Drawing, das ich immer noch nicht verstehe? Hänge ich hinter den Kulissen von Apple Voodoo Magic (tm) an, wodurch PDFView sich auf völlig andere Weise als andere NSViews verhält?

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

}