iphone - Merge PDF files on iOS -


is there way in ios merge pdf files, is, append pages of 1 @ end of , save disk?

i came out solution:

// documents dir nsarray *paths = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes); nsstring *documentsdirectory = [paths objectatindex:0];  // file paths nsstring *pdfpath1 = [documentsdirectory stringbyappendingpathcomponent:@"1.pdf"]; nsstring *pdfpath2 = [documentsdirectory stringbyappendingpathcomponent:@"2.pdf"]; nsstring *pdfpathoutput = [documentsdirectory stringbyappendingpathcomponent:@"out.pdf"];  // file urls cfurlref pdfurl1 = (cfurlref)[[nsurl alloc] initfileurlwithpath:pdfpath1]; cfurlref pdfurl2 = (cfurlref)[[nsurl alloc] initfileurlwithpath:pdfpath2]; cfurlref pdfurloutput = (cfurlref)[[nsurl alloc] initfileurlwithpath:pdfpathoutput];  // file references cgpdfdocumentref pdfref1 = cgpdfdocumentcreatewithurl((cfurlref) pdfurl1); cgpdfdocumentref pdfref2 = cgpdfdocumentcreatewithurl((cfurlref) pdfurl2);  // number of pages nsinteger numberofpages1 = cgpdfdocumentgetnumberofpages(pdfref1); nsinteger numberofpages2 = cgpdfdocumentgetnumberofpages(pdfref2);  // create output context cgcontextref writecontext = cgpdfcontextcreatewithurl(pdfurloutput, null, null);  // loop variables cgpdfpageref page; cgrect mediabox;  // read first pdf , generate output pages nslog(@"generating pages pdf 1 (%i)...", numberofpages1); (int i=1; i<=numberofpages1; i++) {     page = cgpdfdocumentgetpage(pdfref1, i);     mediabox = cgpdfpagegetboxrect(page, kcgpdfmediabox);     cgcontextbeginpage(writecontext, &mediabox);     cgcontextdrawpdfpage(writecontext, page);     cgcontextendpage(writecontext); }  // read second pdf , generate output pages nslog(@"generating pages pdf 2 (%i)...", numberofpages2); (int i=1; i<=numberofpages2; i++) {     page = cgpdfdocumentgetpage(pdfref2, i);     mediabox = cgpdfpagegetboxrect(page, kcgpdfmediabox);     cgcontextbeginpage(writecontext, &mediabox);     cgcontextdrawpdfpage(writecontext, page);     cgcontextendpage(writecontext);       } nslog(@"done!");  // finalize output file cgpdfcontextclose(writecontext);  // release memory cfrelease(pdfurl1); cfrelease(pdfurl2); cfrelease(pdfurloutput); cgpdfdocumentrelease(pdfref1); cgpdfdocumentrelease(pdfref2); cgcontextrelease(writecontext); 

the biggest issue here memory allocation. can see, in approach have read both pdf files want merge and, @ same time, generate output. releases occur @ end. tried combining pdf file 500 pages (~15mb) containing 100 pages (~3mb) , produced new 1 600 pages (of course!) having ~5mb size (magic?). execution took around 30 seconds (not bad, considering ipad 1) , allocated 17mb (ouch!). app luckily didn't crash, think ios love kill app consuming 17mb one. ;p


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -