2013-03-19 65 views
-1

我需要在大型hq PDF文件中嵌入缩略图,这些文件是使用UIGraphicsBeginPDFContextToFile和UIGraphicsBeginPDFPage创建的,并在其上绘制文本和图像。iOS在PDF中嵌入页面缩略图

有谁知道,如何嵌入页面大拇指?

的Ciao,阿诺

回答

0

如果你想从PDF生成缩略图,那么你可以使用下面的代码。该代码将其写入磁盘。很容易改变它,以便该方法返回图像。

- (void)createPDFThumbnailForFile:(NSString *)theFilename { 
    if (!theFilename) {return;} 
    @try { 
     NSString *path = [FileInfo fullPathForFile:theFilename]; 
     NSURL *pdfFileUrl = [NSURL fileURLWithPath:path]; 
     CFURLRef pdfFileRef = (__bridge CFURLRef) pdfFileUrl; 
     CGPDFDocumentRef pdf = CGPDFDocumentCreateWithURL(pdfFileRef); 
     CGPDFPageRef page; 
     CGRect aRect = CGRectMake(0, 0, 70, 100); // thumbnail size 
     UIGraphicsBeginImageContext(aRect.size); 
     CGContextRef context = UIGraphicsGetCurrentContext(); 
     UIImage *thumbnailImage; 
    // NSUInteger totalNum = CGPDFDocumentGetNumberOfPages(pdf); 
     //we only want the first page 
     for (int i = 0; i < 1; i++) { 
      CGContextSaveGState(context); 
      CGContextTranslateCTM(context, 0.0, aRect.size.height); 
      CGContextScaleCTM(context, 1.0, -1.0); 
      CGContextSetGrayFillColor(context, 1.0, 1.0); 
      CGContextFillRect(context, aRect); 
      // Grab the first PDF page 
      page = CGPDFDocumentGetPage(pdf, 1); 
      CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page, kCGPDFMediaBox, aRect, 0, true); 
      // And apply the transform. 
      CGContextConcatCTM(context, pdfTransform); 

      CGContextDrawPDFPage(context, page); 

      // Create the new UIImage from the context 
      thumbnailImage = UIGraphicsGetImageFromCurrentImageContext(); 
      CGContextRestoreGState(context); 
     } 
     CGPDFDocumentRelease(pdf); 
     NSString *pngPath = [path stringByReplacingOccurrencesOfString:@".pdf" withString:@".png"]; 
    // [@"test" writeToFile:pngPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; 
     [UIImagePNGRepresentation(thumbnailImage) writeToFile:pngPath atomically:YES]; 
    } 
    @catch (NSException *exception) { 
     DebugLog(@"Could not write thumbnail to : %@ /n --> %@", theFileToSave, exception.description); 
    } 

} 
+0

对不起,我知道如何绘制*大拇指,但我需要将它们作为页面缩略图嵌入pdf中。 – akw 2013-03-20 00:07:06