1 -(void)createPdf:(UIImage *)img andText:(NSString *)text{
2 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
3 NSString *saveDirectory = [paths objectAtIndex:0];
4 NSString *saveFileName = @"myPDF.pdf";
5 NSString *newFilePath = [saveDirectory stringByAppendingPathComponent:saveFileName];
6 const char *filename = [newFilePath UTF8String];
7 CGRect pageRect = CGRectMake(0, 0, 612, 792);
8 //This code block sets up our PDF Context so that we can draw to it9
10
11 CGContextRef pdfContext;
12 CFStringRef path;
13 CFURLRef url;
14 CFMutableDictionaryRef myDictionary = NULL;
15 //Create a CFString from the filename we provide to this method when we call it16 path = CFStringCreateWithCString (NULL, filename, kCFStringEncodingUTF8);
17 //Create a CFURL using the CFString we just defined18 url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0);
19 CFRelease (path);
20 //This dictionary contains extra options mostly for ‘signing’ the PDF21 myDictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
22 CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File"));
23 CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("My Name"));
24 //Create our PDF Context with the CFURL, the CGRect we provide, and the above defined dictionary25 pdfContext = CGPDFContextCreateWithURL (url, &pageRect, myDictionary);
26 //Cleanup our mess27 CFRelease(myDictionary);
28 CFRelease(url);
29
30 //Done creating our PDF Context, now it’s time to draw to it31 //Starts our first page32 CGContextBeginPage (pdfContext, &pageRect);
33
34 UIImage* myUIImage = img;
35 CGImageRef pageImage = [myUIImage CGImage];
36 CGContextDrawImage(pdfContext, CGRectMake(0,0,([myUIImage size].width) , ([myUIImage size].height)), pageImage); //绘制图片
37 //Draws a black rectangle around the page inset by 50 on all sides38 //CGContextStrokeRect(pdfContext, CGRectMake(50, 50, pageRect.size.width - 100, pageRect.size.height - 100));39 40 //Adding some text on top of the image we just added41 //CGContextSelectFont (pdfContext, "Helvetica", 30, kCGEncodingMacRoman);42 CGContextSetTextDrawingMode (pdfContext, kCGTextFill);
43 CGContextSetRGBFillColor (pdfContext, 0, 0, 0, 1);
44
45
46
47 UIGraphicsPushContext(pdfContext); //将需要绘制的层push
48 CGContextTranslateCTM(pdfContext, 0, 792); //转换Y轴坐标, 底层坐标与cocoa 组件不同 Y轴相反
49 CGContextScaleCTM(pdfContext, 1, -1);
50
51 //CGContextShowTextAtPoint (pdfContext, 260, 390, [text UTF8String], strlen([text UTF8String]));//汉字不正常52
53 [text drawAtPoint:CGPointMake(80, 80) withFont:[UIFont systemFontOfSize:18]]; //绘制汉字
54
55 //UIFont *font = [UIFont systemFontOfSize:15 ]; //自定义字体56 //CGContextSetFillColorWithColor(pdfContext, [UIColor blackColor].CGColor); //颜色57 //[text drawAtPoint:CGPointMake(260,390) forWidth:50 withFont:font minFontSize:8 actualFontSize:NULL lineBreakMode:UILineBreakModeTailTruncation baselineAdjustment:UIBaselineAdjustmentAlignCenters];58
59 UIGraphicsPopContext();
60
61
62 CGContextStrokePath(pdfContext);
63
64 //End text65 //We are done drawing to this page, let’s end it66 //We could add as many pages as we wanted using CGContextBeginPage/CGContextEndPage67 CGContextEndPage (pdfContext);
68 //We are done with our context now, so we release it69 CGContextRelease (pdfContext);
70 }