zoukankan      html  css  js  c++  java
  • iOS生成PDF的关键代码-备忘

    //此方法只是把当前页面的内容生成PDF并保存在沙盒中。

    //还需要做:把当前面没有显示的内容以分页的形式生成PDF,并把PDF读取并显示出来

    //关于显示可以参考:念茜的博客 iOS开发笔记——PDF的显示和浏览 (http://blog.csdn.net/yiyaaixuexi/article/details/7645725

    //Create empty PDF context on iPhone for later randering in it

    -(CGContextRef) createPDFContext:(CGRect)inMediaBox path:(CFStringRef) path

    {

        CGContextRef myOutContext = NULL;

        CFURLRef url;

        url = CFURLCreateWithFileSystemPath (NULL, // 1

                                             path,

                                             kCFURLPOSIXPathStyle,

                                             false);

        if (url != NULL) {

            myOutContext = CGPDFContextCreateWithURL (url,// 2

                                                      &inMediaBox,

                                                      NULL);

            CFRelease(url);// 3

        }

        return myOutContext;// 4

    }

     

    /**

     *  把当前页面绘制成PDF并保存

     */

    - (void)drawPDF{

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

        NSString *documentsDirectory = [paths objectAtIndex:0];

        //PDF保存的路径

        NSLog(@"documentsDirectory:%@",documentsDirectory);

        NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"tmp.pdf"];

        

        CGContextRef pdfContext = [self createPDFContext:self.view.bounds path:(CFStringRef)writableDBPath];

        

        NSLog(@"PDF Context created");

        CGContextBeginPage (pdfContext,nil); // 6

        

        //turn PDF upsidedown

        CGAffineTransform transform = CGAffineTransformIdentity;

        transform = CGAffineTransformMakeTranslation(0, self.view.bounds.size.height);

        transform = CGAffineTransformScale(transform, 1.0, -1.0);

        CGContextConcatCTM(pdfContext, transform);

        

        //Draw view into PDF

        [self.view.layer renderInContext:pdfContext];

        

        CGContextEndPage (pdfContext);// 8

        CGContextRelease (pdfContext);

    }

     

  • 相关阅读:
    poj3252(组合数)
    cf-Global Round2-E. Pavel and Triangles
    cf-Global Round2-D. Frets On Fire(二分)
    cf-Global Round2-C. Ramesses and Corner Inversion(思维)
    trick
    2019ICPC南京网络赛B super_log(a的b塔次方)
    欧拉定理,欧拉降幂
    F. Moving On
    Codeforces Round #200 (Div. 1)D. Water Tree
    hdu5452
  • 原文地址:https://www.cnblogs.com/endtel/p/4828105.html
Copyright © 2011-2022 走看看