我正在尝试创建一个Word文档的ThumbnailImage。我使用UIWebView加载文档,然后将其转换为图像。 PNG文件。我已经观看了一千次并且文件路径是正确的,但最终图像是空白的。有人可以查看我的代码,看看是否有什么问题?非常感谢你提前。
UIWebView *myWebView22 = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
path44 = [caminoINICIAL stringByAppendingPathComponent:@"documentoInicial.doc"];
NSURL *fileURL22 = [[NSURL alloc] initFileURLWithPath:path44];
NSURLRequest *req22 = [NSURLRequest requestWithURL:fileURL22];
[myWebView22 setScalesPageToFit:YES];
[myWebView22 loadRequest:req22];
UIGraphicsBeginImageContext(myWebView22.bounds.size);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(c, 0, 0);
[myWebView22.layer renderInContext:c];
UIImage* viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
pngPath = [caminoINICIAL stringByAppendingPathComponent:[NSString stringWithFormat:@"imagenFinal.png"]];
[UIImagePNGRepresentation(viewImage) writeToFile:pngPath atomically:YES];
答案 0 :(得分:0)
我很确定这是一个时间问题。 UIWebView具有自己的线程并加载文档异步,您需要等到它被加载后再使用renderInContext。
通过固定时间或深度子视图检查来确定时间可能很棘手。
您可能希望使用QuickLook而不是UIWebView来更多地控制渲染。
答案 1 :(得分:0)
问题是您正在触发请求,然后立即捕获图像。 loadRequest:
是异步的。它发送请求,并立即返回。它不会等到文档加载后再返回。因此,当您捕获图像时,设备仍在忙于加载文档。
您可以为Web视图提供一个委托,该委托在文档加载完成后接收消息。从该委托方法中捕获图像。