一个基于 UIImage 的用于加载 PDF 的分类,受 UIImage-PDF 启发。UIImage-ASMPDF 函数与 UIImage-PDF 在很大程度上相同,但通过删除额外的 UIView 需要简化了实现。UIImage-ASMPDF 还允许您指定 PDF 内的区域内要渲染到图片中,而不仅仅是渲染整个页面。
NSURL* imageURL = ...; // URL pointing to a PDF
UIImage* image = [UIImage imageWithPDFatURL:imageURL destinationSize:CGSizeMake(320, 415)];
这将返回一个图像,它是 PDF 第一页的渲染。图像的大小将与 destinationSize 相匹配。图像将是完全透明的,并且其比例设置为与 [UIScreen mainScreen].scale 相匹配。其他方法也可以让您控制这些设置。
您还可以指定在 PDF 第一页内的矩形区域进行渲染,而不仅仅是整个图像。
CGRect cropRect = CGRectMake(0, 0, 96, 96);
UIImage* croppedImage = [UIImage imageWithPDFatURL:imageURL destinationSize:CGSizeMake(300, 300) cropRect:cropRect];
裁剪矩形应以点为单位指定。
UIImage-ASMPDF 支持将渲染的图像缓存到内存、磁盘或两者。要请求缓存:
[UIImage setASMPDFCacheType:ASMPDFNoCache]; // No cache (the default)
[UIImage setASMPDFCacheType:ASMPDFMemoryCache]; // Cache to memory
[UIImage setASMPDFCacheType:ASMPDFDiskCache]; // Cache to disk
[UIImage setASMPDFCacheType:ASMPDFDiskCache | ASMPDFMemoryCache]; //Cache to memory and disk, favoring memory.
这应该在早期调用,例如在您的应用代理的 application:didFinishLaunchingWithOptions: 方法中。
内存缓存使用 NSCache,因此在您的应用接收到内存警告时应该清除。
磁盘缓存将渲染的图像作为 PNG 存储在您的应用的 NSCachesDirectory 中,这意味着设备可能会在警告之前清除缓存以释放磁盘空间。
如果您指定使用内存和磁盘缓存,则首先检查内存缓存,然后是磁盘。同时更新两个缓存。
当前仅支持渲染多页 PDF 的第一页。支持多页应该很简单,但我不 currently 有使用它们。请随时提交拉取请求!