zoukankan      html  css  js  c++  java
  • IOS 绘制PDF -转

    -(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 it
     9     
    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 it
    16     path = CFStringCreateWithCString (NULL, filename, kCFStringEncodingUTF8);
    17     // Create a CFURL using the CFString we just defined
    18     url = CFURLCreateWithFileSystemPath (NULL, path, kCFURLPOSIXPathStyle, 0);
    19     CFRelease (path);
    20     // This dictionary contains extra options mostly for ‘signing’ the PDF
    21     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 dictionary
    25     pdfContext = CGPDFContextCreateWithURL (url, &pageRect, myDictionary);
    26     // Cleanup our mess
    27     CFRelease(myDictionary);
    28     CFRelease(url);
    29 
    30     // Done creating our PDF Context, now it’s time to draw to it
    31     // Starts our first page
    32     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 sides
    38 //    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 added
    41 //    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 text
    65     // We are done drawing to this page, let’s end it
    66     // We could add as many pages as we wanted using CGContextBeginPage/CGContextEndPage
    67     CGContextEndPage (pdfContext);
    68     // We are done with our context now, so we release it
    69     CGContextRelease (pdfContext);
    70 }
    
    
    1 - (void)viewDidLoad
    2 {
    3     [super viewDidLoad];
    4     // Do any additional setup after loading the view, typically from a nib.
    5     
    6     //调用方法
    7     [self createPdf:[UIImage imageNamed:@"aa"] andText:@"汉字"];
    8  
    9 }

    转自:http://www.cppblog.com/Khan/archive/2013/03/18/198566.html

  • 相关阅读:
    轻量级MVVM框架Stylet介绍:(13) ValidatingModelBase
    轻量级MVVM框架Stylet介绍:(9)PropertyChangedBase
    轻量级MVVM框架Stylet介绍:(8)事件聚合器
    轻量级MVVM框架Stylet介绍:(12) BindableCollection
    轻量级MVVM框架Stylet介绍:(14) StyletIoC
    轻量级MVVM框架Stylet介绍:(5) Actions
    轻量级MVVM框架Stylet介绍:(10) Execute:调度到UI线程
    轻量级MVVM框架Stylet介绍:(7) MessageBox
    轻量级MVVM框架Stylet介绍:(6) WindowManager
    tushare的mysql的sql结构文件
  • 原文地址:https://www.cnblogs.com/endtel/p/4846658.html
Copyright © 2011-2022 走看看