iOS 添加图片在pdf上

670 阅读1分钟
-(void)addSignature:(UIImage *)imgSignature1 onPDFData:(NSData *)pdfData2 {
    NSString *pdfPath = [[NSBundle mainBundle]pathForResource:@"ES6" ofType:@"pdf"];
    NSData *pdfdata1 = [NSData dataWithContentsOfFile:pdfPath];
    
    NSString *imagePath = [[NSBundle mainBundle]pathForResource:@"seal" ofType:@"png"];
    UIImage *img = [UIImage imageWithContentsOfFile:imagePath];
    
    
    NSMutableData* outputPDFData = [[NSMutableData alloc] init];
    
    CGDataConsumerRef dataConsumer = CGDataConsumerCreateWithCFData((CFMutableDataRef)outputPDFData);
    
    CFMutableDictionaryRef attrDictionary = NULL;
    
    attrDictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
    
    CFDictionarySetValue(attrDictionary, kCGPDFContextTitle, CFSTR("My Doc"));
    
    CGContextRef pdfContext = CGPDFContextCreate(dataConsumer, NULL, attrDictionary);
    
    CFRelease(dataConsumer);
    
    CFRelease(attrDictionary);
    
    CGRect pageRect;
    
    // Draw the old "pdfData" on pdfContext
    
    CFDataRef myPDFData = (__bridge CFDataRef) pdfdata1;
    
    CGDataProviderRef provider = CGDataProviderCreateWithCFData(myPDFData);
    
    CGPDFDocumentRef pdf = CGPDFDocumentCreateWithProvider(provider);
    
    CGDataProviderRelease(provider);
    
    NSInteger totoalPages = CGPDFDocumentGetNumberOfPages(pdf);
    
    NSArray *array = @[@1, @2, @3, @4, @5, @6];
    
    
    for(int i=0;i<totoalPages;i++){
        CGPDFPageRef page = CGPDFDocumentGetPage(pdf, i+1);
        pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
        
        CGContextBeginPage(pdfContext, &pageRect);
        CGContextDrawPDFPage(pdfContext, page);
        
        if(i<=5){
            NSLog(@"contains interger %d",i);
            
            pageRect = CGRectMake(0, 0,img.size.width , img.size.height);
            
            CGImageRef pageImage = [img CGImage];
            
            CGContextDrawImage(pdfContext, pageRect, pageImage);
        }
        
       
        CGPDFContextEndPage(pdfContext);
    }
    
    
 /**
    CGPDFPageRef page = CGPDFDocumentGetPage(pdf, 2);
    
    pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
    
    CGContextBeginPage(pdfContext, &pageRect);
    
    CGContextDrawPDFPage(pdfContext, page);
    
    // Draw the signature on pdfContext
    
    pageRect = CGRectMake(0, 0,img.size.width , img.size.height);
    
    CGImageRef pageImage = [img CGImage];
    
    CGContextDrawImage(pdfContext, pageRect, pageImage);
    
    // release the allocated memory
    
    CGPDFContextEndPage(pdfContext);
    
//    CGPDFContextClose(pdfContext);
    
    
    CGPDFPageRef page1= CGPDFDocumentGetPage(pdf, 1);
    
    pageRect = CGPDFPageGetBoxRect(page1, kCGPDFMediaBox);
    
    CGContextBeginPage(pdfContext, &pageRect);
    
    CGContextDrawPDFPage(pdfContext, page1);
    
    // Draw the signature on pdfContext
    
    pageRect = CGRectMake(0, 0,img.size.width , img.size.height);
    
   // CGImageRef pageImage = [img CGImage];
    
    CGContextDrawImage(pdfContext, pageRect, pageImage);
    
    // release the allocated memory
    
    CGPDFContextEndPage(pdfContext);
    
//    CGPDFContextClose(pdfContext);
    
    
    **/
    
    CGContextRelease(pdfContext);
    
    // write new PDFData in "outPutPDF.pdf" file in document directory
    
    NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    
    
    
    NSString *pdfFilePath =[NSString stringWithFormat:@"%@/outPutPDF.pdf",docsDirectory];
    
    [outputPDFData writeToFile:pdfFilePath atomically:YES];
    
}