java将iod文件转为pdf_IOS 绘制PDF - Khan's Notebook GCC/GNU/Linux Delphi/Window Java/Anywhere - C++博客...

束涵涤
2023-12-01

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 }

 类似资料: