我曾经广泛地研究过这个问题,但没能找到一个简单的方法来做到这一点。根据文件的类型,QuickLook会生成不同类型的输出。例如,对于iWork文件,生成器会生成显示在WebView中的HTML。对于其他类型,它返回不同类型的数据。
我从来没有最终使用的代码,但这里的一些代码,我挖出一些私人的API可能是有用:
id QLPreviewCreate(CFAllocatorRef allocator, CFURLRef url, CFDictionaryRef options);
id QLPreviewCopyBitmapImage(id preview);
id QLPreviewCopyData(id preview);
NSString* QLPreviewGetPreviewType(id preview);
id QLPreviewCopyProperties(id preview);
- (NSData *)getDataForFile:(NSString *)path
{
NSURL *fileURL = [NSURL fileURLWithPath:path];
id preview = QLPreviewCreate(kCFAllocatorDefault, fileURL, 0);
if (preview)
{
NSString* previewType = QLPreviewGetPreviewType(preview);
if ([previewType isEqualToString:@"public.webcontent"])
{
// this preview is HTML data
return QLPreviewCopyData(preview);
}
else
{
NSLog(@"this type is: %@", previewType);
// do something else
}
}
return nil;
}
您可能还需要从马特Gemmell检查了这一点: HTTP: //mattgemmell.com/2007/10/29/how-to-get-a-quick-look-preview-as-an-nsimage 它使用QLThumbnailImageCreate创建预览(甚至很大)。如果我没有记错,我遇到的问题是它只能用于第一页文档。 – 2010-01-31 05:09:58
尽管来自Matt Gemmell的代码的标题,它实际上只返回缩略图,而不是预览。 – 2010-01-31 06:30:02
感谢您使用私人API ......这些看起来很有用。我认为唯一可行的方法是以某种方式为给定文件找到生成器包,然后扮演QL面板的角色,根据需要接受HTML,图像等。似乎可以做到有足够的黑客行为,但如果苹果做出改变的话,这些行为并不平凡,也不会特别强大 – 2010-01-31 06:32:17