gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:20:35 24 4
gpt4 key购买 nike

我正在一个 ios 应用程序中创建一个代表各种类型(PDF、图像、视频、HTML、.pages、.numbers、Word 等)下载文件的单元格网格,并且正在寻找一种方法来抢先创建预览缩略图让这些文件显示在单元格中。我目前正在使用 UIDocumentInteractionController 在用户选择一个文档后预览这些文档,并希望图标数组能够返回预览图像。不幸的是,它只返回一个通用图标。

我看到 Pages 和 Numbers 这样做,但他们拥有文档和格式。我希望 Quicklook 框架能提供一个解决方案,但我还没有找到它。有没有其他人找到一种方法来轻松生成这些缩略图?

我更喜欢使用实际的 UIImage 而不是其他人建议的 UIWebView 。该解决方案似乎是一个黑客,我必须相信那里有更好的解决方案。

我的下一个选择是在他们打开文档后通过将 View 捕获为图像来生成预览,但这仍然看起来很老套。

有人有任何想法或更清晰的选择吗?

谢谢,

最佳答案

我的解决方案:
我从来没有找到这个特殊问题的完整解决方案,但我能够相当有效地处理 PDF。老实说,我不记得是我写了这个还是找到了一个例子。如果是您的代码发布在其他地方,谢谢!此处的最终结果是 docImage 为空,或者包含 PDF 的第一页作为图像。加载表格行时,我将图像预览设置为默认图像,然后使用 block 在后台线程上运行此代码。完成后,我只需将预览动画返回到单元格中。

NSURL *pdfFileURL = [NSURL fileURLWithPath:localFilePath];
CGPDFDocumentRef pdfDoc = CGPDFDocumentCreateWithURL((__bridge CFURLRef) pdfFileURL);
NSUInteger numPages = CGPDFDocumentGetNumberOfPages(pdfDoc);

if(numPages > 0) {
docImage = [UIImage imageFromPDFDocumentRef:pdfDoc];
}
CGPDFDocumentRelease(pdfDoc);

UIImage 类别:
@implementation UIImage (CGPDFDocument)

+(UIImage *)imageFromPDFDocumentRef:(CGPDFDocumentRef)documentRef {
return [self imageFromPDFDocumentRef:documentRef page:1];
}
+(UIImage *)imageFromPDFDocumentRef:(CGPDFDocumentRef)documentRef page:(NSUInteger)page {
CGPDFPageRef pageRef = CGPDFDocumentGetPage(documentRef, page);
CGRect pageRect = CGPDFPageGetBoxRect(pageRef, kCGPDFCropBox);

UIGraphicsBeginImageContext(pageRect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, CGRectGetMinX(pageRect),CGRectGetMaxY(pageRect));
CGContextScaleCTM(context, 1, -1);
CGContextTranslateCTM(context, -(pageRect.origin.x), -(pageRect.origin.y));
CGContextDrawPDFPage(context, pageRef);

UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return finalImage;
}
@end

关于iphone - 从预览内容生成的文档缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com