Je suis dans une situation dans laquelle je souhaite imprimer un document PDF de plusieurs pages. Alors que je pouvais utiliser les classes d'utilitaires PDFKit et/ou les fonctions quartz pour obtenir les informations pour écrire manuellement le code de dessin/pagination pour une sous-classe NSView, je pensais que l'alternative serait de créer un PDFView hors écran et de lui imprimer . Lorsque j'ai essayé cette solution, la boîte de dialogue d'impression n'a pas disparu, tous les contrôles des paramètres d'impression dans la moitié droite de la boîte de dialogue d'impression ont disparu et l'application s'est figée. J'ai ensuite écrit une petite application de test avec la méthode suivante qui illustre le problème. Lorsque le programme de test est compilé sans la macro préprocesseur USE_PDF_VIEW définie, la vue vide s'affiche correctement. Si USE_PDF_VIEW est défini, le document ne s'imprime pas, la plupart des contrôles de dialogue d'impression disparaissent et l'application se bloque. Alors que j'ai d'autres moyens d'atteindre mon objectif, je suis curieux de savoir pourquoi ce raccourci ne fonctionne pas. Y at-il quelque chose à propos de dessin Cocoa je ne comprends toujours pas? Est-ce que je tape sur Apple Voodoo Magic (tm) derrière les scènes qui font que PDFView se comporte d'une manière complètement différente des autres NSViews?Impression de PDFViews hors écran
- (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
}
Je vais avoir exactement le même problème. Avez-vous déjà trouvé une solution? –