当iPhone程序请求服务器并动态显示pdf的时候,如果需要将pdf首页设为此pdf的封面,则以图片形式显示pdf首页是一个不错的选择。
核心代码如下:
- (void)viewDidLoad {
NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"test.pdf"];
CFStringRef path = CFStringCreateWithCString(NULL, [filePath UTF8String], kCFStringEncodingUTF8);
CFURLRef url = CFURLCreateWithFileSystemPath(NULL, path, kCFURLPOSIXPathStyle, NO);
CFRelease(path);
CGPDFDocumentRef myDocumentRef=CGPDFDocumentCreateWithURL(url);
myPageRef=CGPDFDocumentGetPage(myDocumentRef, 1);
CGRect pageRect = CGRectIntegral(CGPDFPageGetBoxRect(myPageRef, kCGPDFCropBox));
CATiledLayer *tiledLayer = [CATiledLayer layer];
tiledLayer.delegate = self;
tiledLayer.tileSize = CGSizeMake(320.0, 460.0);
tiledLayer.frame = pageRect;
UIView *tempview = [[UIView alloc] init];
[tempview setFrame:pageRect];
[tempview.layer addSublayer:tiledLayer];
[self.imgview setImage:[self imageFromView:tempview]];
[tempview release];
[super viewDidLoad];
}
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx{
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx));
CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(myPageRef, kCGPDFCropBox, layer.bounds, 0, true));
CGContextDrawPDFPage(ctx, myPageRef);
}
- (UIImage*)imageFromView:(UIView*)view{
UIGraphicsBeginImageContext([view bounds].size);
BOOL hidden = [view isHidden];
[view setHidden:NO];
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[view setHidden:hidden];
return image;
}
http://download.csdn.net/detail/ydj213/4163636
本站原创,转载请标明:来自追梦博客(http://www.wuleilei.com/)