私の解決策: この特定の問題の完全な解決策は見つかりませんでしたが、PDF をかなり効率的に処理することができました。正直なところ、これを書いたのか、例を見つけたのか覚えていません。他の場所に投稿されたのがあなたのコードである場合は、ありがとう! ここでの最終結果は、docImage が null であるか、PDF の最初のページが画像として含まれていることです。テーブルの行をロードするとき、画像のプレビューをデフォルトの画像に設定し、ブロックを使用してバックグラウンド スレッドでこのコードを実行します。完了したら、プレビューをアニメーション化してセルに戻します。
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