从PDF Objective-C生成高质量的缩略图图像

时间:2015-11-26 15:09:35

标签: ios objective-c pdf-generation core-graphics

我能够从PDF文档生成pdf缩略图图像。但问题是我在图片的顶部和底部得到white space,而且我更改了X Y coordinate值,但它对我没用。

而且我得到low qualit y图像意味着这些图像效果不佳。

iBook中,pdf缩略图看起来太好了。所以我想生成那种缩略图。

这是代码..

-(NSMutableArray *)generateThumbnail:(NSMutableArray *)arrayDocuments
{
    NSMutableArray* arrayOfImages = [[NSMutableArray alloc] init];

    for (int i = 0; i < [arrayDocuments count]; i++) {

        NSString* fileName = [arrayDocuments objectAtIndex:i];

         NSString *filePath = [[NSBundle mainBundle]pathForResource:fileName ofType:nil];

        NSURL* pdfFileUrl = [NSURL fileURLWithPath:filePath];

        CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfFileUrl);

        CGPDFPageRef page = CGPDFDocumentGetPage(pdf, 0 + 1);

        CGRect aRect =CGRectMake(0, 0, 100, 100);
        UIGraphicsBeginImageContext(aRect.size);
        CGContextRef context = UIGraphicsGetCurrentContext();
        UIImage* thumbnailImage;

        CGContextSaveGState(context);
        CGContextTranslateCTM(context, 0.0, aRect.size.height);
        CGContextScaleCTM(context, 1.0, -1.0);

        CGContextSetGrayFillColor(context, 1.0, 1.0);
        CGContextFillRect(context, aRect);


        CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page, kCGPDFMediaBox, aRect, 0, true);

        CGContextConcatCTM(context, pdfTransform);

        CGContextDrawPDFPage(context, page);

        thumbnailImage = UIGraphicsGetImageFromCurrentImageContext();

        [arrayOfImages addObject:thumbnailImage];

        CGContextRestoreGState(context);

        UIGraphicsEndImageContext();
        CGPDFDocumentRelease(pdf);
    }

    return arrayOfImages;
}

1 个答案:

答案 0 :(得分:0)

使用它,它将提高质量。它创建了具有屏幕/设备规模的图像,对于iPhone 5系列为2.0,对于iPhone 6加上3.0,我猜。

UIGraphicsBeginImageContextWithOptions(aRect.size,NO,[UIScreen mainScreen] .scale);

以下使用比例因子1默认为质量低的原因。

UIGraphicsBeginImageContext(aRect.size);