首页 > 移动平台 > 详细

IOS - PDF合并 - 转

时间:2015-09-29 22:00:04      阅读:476      评论:0      收藏:0      [点我收藏+]

来自:http://www.cnblogs.com/tx8899/p/4082749.html

#pragma mark - Merge PDF

 

- (void)mergePDF

{

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectoryNSUserDomainMaskYES);

    NSString *filePath1 = [[paths objectAtIndex:0stringByAppendingPathComponent:@"阅办卡.pdf"];

    NSString *filePath2 = [[paths objectAtIndex:0stringByAppendingPathComponent:@"文件.pdf"];

    NSArray *PDFURLS = [NSArray arrayWithObjects:filePath1,filePath2, nil];

    

    [self joinPDF:PDFURLS];

}

 

- (NSString *)joinPDF:(NSArray *)listOfPaths {

    // File paths

    NSString *fileName = [NSString stringWithFormat:@"公文%d.pdf",arc4random_uniform(100)];

    NSString *pdfPathOutput = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectoryNSUserDomainMaskYES)objectAtIndex:0stringByAppendingPathComponent:fileName];

    

    CFURLRef pdfURLOutput = (  CFURLRef)CFBridgingRetain([NSURL fileURLWithPath:pdfPathOutput]);

    

    NSInteger numberOfPages = 0;

    // Create the output context

    CGContextRef writeContext = CGPDFContextCreateWithURL(pdfURLOutput, NULLNULL);

    

    for (NSString *source in listOfPaths) {

        CFURLRef pdfURL = (  CFURLRef)CFBridgingRetain([[NSURL allocinitFileURLWithPath:source]);

        

        //file ref

        CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL);

        numberOfPages = CGPDFDocumentGetNumberOfPages(pdfRef);

        

        // Loop variables

        CGPDFPageRef page;

        CGRect mediaBox;

        

        // Read the first PDF and generate the output pages

        //        NSLog(@"GENERATING PAGES FROM PDF 1 (%@)...", source);

        for (int i=1; i<=numberOfPages; i++) {

            page = CGPDFDocumentGetPage(pdfRef, i);

            mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);

            CGContextBeginPage(writeContext, &mediaBox);

            CGContextDrawPDFPage(writeContext, page);

            CGContextEndPage(writeContext);

        }

        

        CGPDFDocumentRelease(pdfRef);

        CFRelease(pdfURL);

    }

    CFRelease(pdfURLOutput);

    

    // Finalize the output file

    CGPDFContextClose(writeContext);

    CGContextRelease(writeContext);

    

    return pdfPathOutput;

}

IOS - PDF合并 - 转

原文:http://www.cnblogs.com/endtel/p/4847341.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!