2014-02-21 3 views
0

핵심 그래픽, CGContextDrawPDFPage 기능을 사용하여 PDF를 렌더링 중입니다. 이미지보기에서 PDF 페이지를 표시하려고합니다. 페이지가 완벽하게 렌더링됩니다. 그러나 일부 페이지의 방향이 올바르지 않습니다. 일부는 오른쪽, 거꾸로 뒤집혀 있습니다. 이는 일부 PDF/페이지에서만 발생합니다. 다음은 PDF 페이지를 렌더링하는 코드 단편입니다. 나는 많은 게시물을 온라인에서 보았지만 그들 모두는 어떤 방식 으로든 실패하고있다. 또한 핵심 그래픽에 익숙하지 않습니다.올바른 방향으로 PDF를 렌더링하는 올바른 방법은 무엇입니까?

CGImageRef imageRef = NULL; 
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); 
CGBitmapInfo bmi = (kCGBitmapByteOrder32Little | kCGImageAlphaNoneSkipFirst); 
CGContextRef context = CGBitmapContextCreate(NULL, target_w, target_h, 8, 0, rgb, bmi); 

if (context != NULL) { 

    CGRect thumbRect = CGRectMake(0.0f, 0.0f, target_w, target_h); 
    CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 1.0f); 
    CGContextFillRect(context, thumbRect); 
    CGContextSetRenderingIntent(context, kCGRenderingIntentDefault); 

    CGRect mediaRect = CGPDFPageGetBoxRect(thePDFPageRef, kCGPDFCropBox); 
    CGContextScaleCTM(context, target_w/mediaRect.size.width, target_h/mediaRect.size.height); 
    CGContextTranslateCTM(context, -mediaRect.origin.x, -mediaRect.origin.y); 

    CGContextDrawPDFPage(context, thePDFPageRef); 
    imageRef = CGBitmapContextCreateImage(context); 
    CGContextRelease(context); 
} 

CGColorSpaceRelease(rgb); 

if (imageRef != NULL) { 

    UIImage *image = [UIImage imageWithCGImage:imageRef scale:UIScreen.mainScreen.scale orientation:UIImageOrientationUp]; 
    CFRelease(imageRef); 
} 

PDF를 렌더링하는 완벽한 방법을 제안 해주세요.

+0

필요하십니까? 감사. – EmptyStack

답변

0

나는 이것이 확실하지 않기 때문에 도움이 될지 모르겠다. 당신의 PDF에서 무엇을 캡처하려고 하는가?

그러나 나는 그것을했을 때 필자의 webview에서 pdf를 할 필요가 있었다. 이를 위해, 당신은 사람이 되거 시겠어요 다음

#import <QuartzCore/QuartzCore.h> 

 CGRect frame = myWebView.frame; 
     frame.size.height = 1; 
     myWebView.frame = frame; 
     CGSize fittingSize = [myWebView sizeThatFits:CGSizeZero]; 
     frame.size = fittingSize; 
     myWebView.frame = frame; 

     UIGraphicsBeginImageContextWithOptions(fittingSize, YES, 2); 
     [myWebView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
     UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     UIImageView *myImg = [[UIImageView alloc] initWithImage:viewImage]; 
     NSMutableData *pdfData = [NSMutableData data]; 

     UIGraphicsBeginPDFContextToData(pdfData, myImg.bounds, nil); 
     UIGraphicsBeginPDFPage(); 

     [myImg.layer renderInContext:UIGraphicsGetCurrentContext()]; 

     UIGraphicsEndPDFContext(); 
관련 문제