iOS_PDF文件合并

  • PDF文件合并
// 返回值为合并后的pdf文件路径,存储在沙盒内
- (NSString *)mergePDFFiles:(NSArray *)listOfPaths {
    // File paths
    NSString *fileName = [NSString stringWithFormat:@"合并后的文件%d.pdf",arc4random_uniform(100)];

    NSString *pdfPathOutput = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:fileName];

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

    NSInteger numberOfPages = 0;
    // Create the output context
    CGContextRef writeContext = CGPDFContextCreateWithURL(pdfURLOutput, NULL, NULL);

    for (NSString *source in listOfPaths) {
        CFURLRef pdfURL = nil;
        if ([source containsString:@"http"]) {
            NSURL *url = [[NSURL alloc] initWithString:source];
            pdfURL = (CFURLRef)CFBridgingRetain(url);
        }else{
            pdfURL = (CFURLRef)CFBridgingRetain([[NSURL alloc] initFileURLWithPath:source]);
        }
    
        CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL);
        numberOfPages = CGPDFDocumentGetNumberOfPages(pdfRef);
        
        CGPDFPageRef page;
        CGRect mediaBox;

        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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值