2009-09-29 7 views
0

J'écris un plugin webkit qui télécharge une image et l'imprime. J'ai vérifié que les données correctes sont téléchargées et que le NSImage a les bonnes dimensions. Malheureusement, le NSImageView contenant l'image n'affiche rien, ni dans le document envoyé à l'imprimante ni dans une fenêtre contenant la vue car c'est la seule sous-vue de la vue de contenu. Voici mon code:NSImageView vide dans le plugin WebKit

-(void)printImageAtURL:(NSString*)imageUrl{ 
    NSURLResponse *response; 
    NSError *error = nil; 

    NSURL *url = [NSURL URLWithString:imageUrl]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20]; 
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
    if(error) 
     return; 
    //Data is the correct length 
    NSImage *image = [[NSImage alloc] initWithData:data]; 

    NSSize imageSize = [image size]; 
    //imageSize is correct dimensions 

    NSRect viewRect = NSMakeRect(0, 0, imageSize.width, imageSize.height); 

    NSImageView *imageView = [[NSImageView alloc] initWithFrame:viewRect]; 
    [imageView setImage:image]; 
    [image release]; 

    NSPrinter *printer = [NSPrinter printerWithName:[[NSPrinter printerNames] objectAtIndex:0]]; 
    NSPrintInfo *printInfo = [[NSPrintInfo alloc] init]; 
    [printInfo setPrinter:printer]; 

    NSPrintOperation *printOp = [NSPrintOperation printOperationWithView:imageView printInfo:printInfo]; 
    [printOp setShowsPrintPanel:NO]; 
    [printOp runOperation]; 
    //The print job is an empty page :(

    //Pop-up a window just to test the image view 
    NSWindow * window = [[NSWindow alloc] init]; 
    [window makeKeyAndOrderFront:self]; 
    [window setFrame:viewRect display:YES]; 
    [[window contentView] addSubview:imageView]; 
    //The window is sized correctly but empty :(

    [printInfo release]; 
    [imageView release]; 

}

Merci!

Répondre

0

Vous l'avez probablement résolu maintenant, mais.

  1. Essayez de charger un fichier local (pas de réseau). Peut-être qu'il y a des problèmes d'encodage quelque part et NSImage ne peut pas correctement analyser le fichier? Essayez d'utiliser NSImageCell au lieu de NSImageView.

On dirait imageView ne va pas, car elle échoue à l'écran et en version imprimée ..

HTH