2015-04-11 3 views
0

Я создаю pdf в Objective C, я создал pdf-файл, и все работает нормально. У меня есть NSString, который содержит код HTML. Я хотел бы создать UIWebView, а затем создать UIImage из UIWebView и, наконец, добавить в pdf, который я создаю.создать UIImage из UIWebView, а затем добавить в pdf

Это то, что я сделал до сих пор:

// inside create pdf method. 
    UIWebView *tempDescWV = [[UIWebView alloc] init]; 
    NSString *updatedDescHTML = [NSString stringWithFormat:@"<script type=""text/javascript"" src=""./myscript.js"">%@</script>", descriptionHTML]; 
    [tempDescWV loadHTMLString:updatedDescHTML baseURL:nil]; 



// pdf creation code all goes here. 
// now I try to load my UIImage onto the pdf. 

UIImage *tempImage = [self imageFromWebView:tempDescWV]; 
     [tempImage drawInRect:CGRectMake(65.0, 55.0, 210.0, 550.0)]; 

Единственное, что показывает это белый блок .. если я предварительно просмотреть UIWebView его полностью пустым, однако, когда я отладки строки, я использую для loadHTMLString Я вижу HTML там.

это imageFromWebView метод, это, похоже, работает только с html теперь загружается в UIWebView.

- (UIImage *) imageFromWebView:(UIWebView *)view 
{ 
    // tempframe to reset view size after image was created 
    CGRect tmpFrame   = view.frame; 

    // set new Frame 
    CGRect aFrame    = view.frame; 
    aFrame.size.height = [view sizeThatFits:[[UIScreen mainScreen] bounds].size].height; 
    view.frame    = aFrame; 

    // do image magic 
    UIGraphicsBeginImageContext([view sizeThatFits:[[UIScreen mainScreen] bounds].size]); 

    CGContextRef resizedContext = UIGraphicsGetCurrentContext(); 
    [view.layer renderInContext:resizedContext]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

    // reset Frame of view to origin 
    view.frame = tmpFrame; 
    return image; 
} 

ответ

0

UIWebView нагрузки асинхронно, так что не оказали ничего к тому времени вы пытаетесь создать образ этого. Вы должны установить себя как делегат веб-просмотра, а затем создать свое изображение в обратном вызове webViewDidFinishLoad:.

0

сначала его право, что dan wrotes. для принятия выстрела использовать follwing:

- (UIImage *)takeScreenshotFromView:(UIView*)theView { //pass here your webview 
    UIGraphicsBeginImageContextWithOptions(theView.bounds.size, NO, [UIScreen mainScreen].scale); 

    [theView drawViewHierarchyInRect:theView.bounds afterScreenUpdates:YES]; 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 
} 
+0

Я попытался использовать это, но на линии, где ваш помощью drawViewHierarchyInRect: приложение сбой с EXC_BAD_ACCESS (код = 1 ... – HurkNburkS

Смежные вопросы