iOS,object-c和swift开发iOS开发iOS 开发

iOS PDF 添加图片

2016-08-16  本文已影响1353人  石显军

上周公司交给我一个任务 在PDF文件中添加一张签名图片

发现中文搜索没有我想要的结果 所以才发布一篇文章 方便其他人开发这个需求时 查询资料

PDF文件添加图片代码:

-(void)addSignature:(UIImage *)imgSignature onPDFData:(NSData *)pdfData {

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) pdfData;

CGDataProviderRef provider = CGDataProviderCreateWithCFData(myPDFData);

CGPDFDocumentRef pdf = CGPDFDocumentCreateWithProvider(provider);

CGDataProviderRelease(provider);

CGPDFPageRef page = CGPDFDocumentGetPage(pdf, 1);

pageRect = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);

CGContextBeginPage(pdfContext, &pageRect);

CGContextDrawPDFPage(pdfContext, page);

// Draw the signature on pdfContext

pageRect = CGRectMake(0, 0,imgSignature.size.width , imgSignature.size.height);

CGImageRef pageImage = [imgSignature 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];

}

上一篇下一篇

猜你喜欢

热点阅读