我正在寻找从MS doc / xls文档的页面创建图像缩略图的方法,但是我什么都没找到。

对于pdf文档,我使用了Quarz框架,但是在这种情况下我不能。

一些帮助?

===============>>#1 票数:6 已采纳

网络视图可用于制作MS文档预览。

我曾经尝试用这段代码来做到这一点。 它可以工作,但是Web视图需要在图形线程中工作,因此在运行此操作时,您的界面会变慢。 也许您可以优化它。

@interface WebViewThumbnailGenerationOperation: NSOperation <UIWebViewDelegate> {
    BOOL finished;
}
@property(nonatomic,retain) NSURL* documentURL;
@property(nonatomic,retain) UIWebView* webView;

-(void)saveThumbnail:(UIImage*)thumbnail;

@end

/**************************************************************************************************/
#pragma mark - WebViewBased Thumbnails

@implementation WebViewThumbnailGenerationOperation

@synthesize documentURL,webView;

-(void)dealloc {
    RELEASE_SAFELY(documentURL);
    [super dealloc];
}


- (void)loadWebView {
    if (self.isCancelled) {
        return;
    }
    self.webView = [[[UIWebView alloc] init] autorelease];
    self.webView.delegate = self;
    self.webView.scalesPageToFit = YES;
    self.webView.frame = CGRectMake(0, 0, 290, 290);
    NSURLRequest *request = [NSURLRequest requestWithURL:documentURL];
    [self.webView loadRequest:request];    
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    if (self.isCancelled) {
        return;
    }
    UIGraphicsBeginImageContext(CGSizeMake(290,290));
    CGContextRef context = UIGraphicsGetCurrentContext();
    [self.webView.layer renderInContext:context];
    UIImage *thumbnail = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [self performSelectorInBackground:@selector(saveThumbnail:) withObject:thumbnail];

    self.webView = nil;
}

-(void)saveThumbnail:(UIImage*)thumbnail {
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    if (self.isCancelled) {
        return;
    }

    if(!thumbnail) {
        return;
    }

    NSData* thumbnailData = UIImageJPEGRepresentation(thumbnail,0.8);
    [IOHelper saveThumbnailData:thumbnailData forDocumentURL:documentURL];

    [self willChangeValueForKey:@"isFinished"];
    finished = YES;
    [self didChangeValueForKey:@"isFinished"];

    [pool release];
}

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    NSLog(@"Preview failed for %@ error %@",document.name,error);
    [self willChangeValueForKey:@"isFinished"];
    finished = YES;
    [self didChangeValueForKey:@"isFinished"];
    self.webView = nil;
}

-(void)start {
    finished = NO;
    [super start];
}

- (void)main {
    if (self.isCancelled) {
        return;
    }
    [self performSelectorOnMainThread:@selector(loadWebView) withObject:nil waitUntilDone:YES];
}

-(BOOL)isFinished {
    return finished;
}

@end

编辑: ARC版本!

@interface WebViewThumbnailGenerationOperation: NSOperation <UIWebViewDelegate>

@property(nonatomic, strong) NSURL* documentURL;
@property(nonatomic, strong) UIWebView* webView;
@property(nonatomic) BOOL finished;


-(void)saveThumbnail:(UIImage*)thumbnail;

@end

/**************************************************************************************************/
#pragma mark - WebViewBased Thumbnails

@implementation WebViewThumbnailGenerationOperation

- (void)loadWebView {
    if (self.isCancelled) {
        return;
    }
    self.webView = [[UIWebView alloc] init];
    self.webView.delegate = self;
    self.webView.scalesPageToFit = YES;
    self.webView.frame = CGRectMake(0, 0, 290, 290);
    NSURLRequest *request = [NSURLRequest requestWithURL:documentURL];
    [self.webView loadRequest:request];    
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    if (self.isCancelled) {
        return;
    }
    UIGraphicsBeginImageContext(CGSizeMake(290,290));
    CGContextRef context = UIGraphicsGetCurrentContext();
    [self.webView.layer renderInContext:context];
    UIImage *thumbnail = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    [self performSelectorInBackground:@selector(saveThumbnail:) withObject:thumbnail];

    self.webView = nil;
}

-(void)saveThumbnail:(UIImage*)thumbnail {
    @autoreleasepool {
        if (self.isCancelled) {
            return;
        }

        if(!thumbnail) {
            return;
        }

        NSData* thumbnailData = UIImageJPEGRepresentation(thumbnail,0.8);
        [IOHelper saveThumbnailData:thumbnailData forDocumentURL:documentURL];

        [self willChangeValueForKey:@"isFinished"];
        finished = YES;
        [self didChangeValueForKey:@"isFinished"];

    }
}

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
    NSLog(@"Preview failed for %@ error %@", document.name, error);
    [self willChangeValueForKey:@"isFinished"];
    finished = YES;
    [self didChangeValueForKey:@"isFinished"];
    self.webView = nil;
}

-(void)start {
    finished = NO;
    [super start];
}

- (void)main {
    if (self.isCancelled) {
        return;
    }
    [self performSelectorOnMainThread:@selector(loadWebView) withObject:nil waitUntilDone:YES];
}

-(BOOL)isFinished {
    return finished;
}

@end

  ask by Maken translate from so

未解决问题?本站智能推荐:

2回复

如何在iOS中生成ppt,doc缩略图

如标题所示, 我实质上是在寻找一种从iOS后台的.DOC,.DOCX或.PPT文件生成缩略图的方法。
4回复

来自UIImagePickerViewController图像的方形缩略图

在我的应用程序中,用户使用UIImagePickerViewController选择图像或拍照。 选择图像后,我想在方形UIImageView(90x90)上显示其缩略图。 我正在使用Apple的代码来创建缩略图。 问题是缩略图不是平方的,函数在设置kCGImageSourceThum
1回复

从视频文件创建很多缩略图时,AVASsetImageGenerator引发错误

我对AVAssetImageGenerator有问题。 缩略图的质量中等,平均图片大小约为50 KB。 我从视频文件的代码中创建了很多缩略图: 创建294个缩略图后,CGImageRef日志给出错误: 如何解决? 如何释放或停止解码器的任何动作? 我在cordova插
1回复

如何获得像谷歌文档一样的“缩略图文档”?

如何获得thumbs document (doc,docx,pdf,pptx,ppt,.....)? 可能是用C#,php,..... 请帮我! 非常感谢你!
1回复

如何为iOS中的UIWebView中加载的文档(doc,html)创建缩略图

在tableview列出了以下文档文件jpg,png,html,txt,doc,xls 。 我有像jpg,png jpeg等图像文件的缩略图... 在tableview didselect方法中,导航到另一个视图控制器,以在UIWebView加载这些文档文件。 任何人
2回复

如何在C#中从doc docx创建缩略图?

您好,我想从doc docx创建缩略图,实际上我使用的是Leadleads库,但出现此错误: ExceptionFilter Leadtools.RasterException:Leadtools.Codecs.RasterCodecs.DoLoad(LoadParams loadPa
1回复

从预览内容生成的文档缩略图

我正在创建一个单元格网格,表示在ios应用程序中下载的各种类型的文件(PDF,图像,视频,HTML,.pages,.numbers,Word等),我正在寻找一种预先创建预览缩略图的方法这些文件显示在单元格中。 我正在使用UIDocumentInteractionController在用户选择一
2回复

从Objective c中的WORD文档创建缩略图图像时遇到的问题

我试图创建一个ThumbnailImage到Word文档。 我使用UIWebView加载文档,然后将其转换为图像。 ng 我已经看了一千遍了,文件路径是正确的,但是最终的图像是空白的。 有人可以查看我的代码,看看是否有问题? 提前非常感谢您。
2回复

iPad detailViewController显示缩略图

我是新手,正在开发iPad应用程序。 我正在开发一个在“根视图”中提供汽车列表的应用程序,当用户选择汽车制造商时,模型的缩略图将显示在详细视图控制器中。 我能够有一张桌子,但是我对如何显示缩略图感到困惑。 我能够在每个表格行中显示一张图片。 有人可以给我点灯吗? 尼克
2回复

iPhone iOS从Vimeo获取缩略图:如何将响应转换为图像?

我正在尝试从Vimeo获取视频缩略图,但是由于某些原因,我无法将返回的NSData转换为UIImage 。 这是我的代码。 如何打开text/html; charset=UTF-8类型的NSData text/html; charset=UTF-8 text/html; charset=U