IOS - PDF合并

來源:互聯網
上載者:User

標籤:io   ar   os   sp   for   檔案   on   log   bs   

#pragma mark - Merge PDF

 

- (void)mergePDF

{

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

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

    NSString *filePath2 = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"檔案.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(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 = (  CFURLRef)CFBridgingRetain([[NSURL alloc] initFileURLWithPath: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合并

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.