Merging PDF Files in Cocoa
Asked Answered
U

1

7

I would like to concatenate several PDF files to form one single PDF. Now I've come so far that I know, PDFKit is the proper way to go (I guess). But I am not sure, how to accomplish the merging. Should I have one PDFDocument and several PDFPage and then call insertPage on the PDFDocument ? Or is there a much simpler way? I dont want to alter the PDFs contetwise, I just want to merge them. Thanks a lot!

Uniaxial answered 10/4, 2011 at 8:9 Comment(0)
V
9

As you indicated, you need one output PDFDocument object which will contain all pages of all input PDF files. To do so, you'll need to loop through all input files, create PDFDocument objects for each one and iterate over all pages to add them using insertPage to the output PDFDocument object.

Assuming that inputDocuments is an NSArray of one ore more PDFDocument objects, you can use this snippet:

PDFDocument *outputDocument = [[PDFDocument alloc] init];
NSUInteger pageIndex = 0;
for (PDFDocument *inputDocument in inputDocuments) {
    for (NSUInteger j = 0; j < [inputDocument pageCount]; j++) {
        PDFPage *page = [inputDocument pageAtIndex:j];
        [outputDocument insertPage:page atIndex:pageIndex++];
    }
}
Ventage answered 10/4, 2011 at 11:9 Comment(2)
I'm really not quite sure how this would work, when I try to use "fast enumeration" on a PDFDocument I get, Collection expression type "PDFDocument *" may not respond to 'countByEnumeratingWithState:objects:count:'Roane
Yes, you have to iterate through all the pages of each PDFDocument. I fixed the error.Ventage

© 2022 - 2024 — McMap. All rights reserved.