i having a big trouble. i'd like merge multiple PDF files in tro One pdf from iphone apps. But i can not. can you help me ? Many thanks
Asked
Active
Viewed 4,240 times
2
-
You want to merge multiple pdf files into one pdf file using an existing app, or do you want to create a new app? – The_Fox Sep 12 '11 at 13:52
-
1Use [`pdftk`](http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/), the `cat` command. – Orbling Sep 12 '11 at 17:41
-
@Orbling: On iOS, uh huh. :/ – BastiBen Feb 04 '13 at 14:31
-
@badcat: You'll note an edit very close to my comment time, the edit adding the iOS tag, which was not there when I loaded the question presumably. The PDFtk source is available, it builds on OS X, could it not be adapted? – Orbling Feb 04 '13 at 14:40
-
@badcat: Also, slightly lame bringing up the error on a 17 month old question comment. – Orbling Feb 04 '13 at 14:42
-
@Orbling: By bad, sorry. – BastiBen Feb 04 '13 at 14:49
2 Answers
3
If I understand the question correctly you are trying to add a bunch of independent PDF files into one PDF file.
I used the code below to add 1 pdf file to the end of another to create one pdf file.
//NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
// File paths
NSString *pdfPath1 = [[NSBundle mainBundle] pathForResource:@"pdf1" ofType:@"pdf"];
NSString *pdfPath2 = [cacheDir stringByAppendingPathComponent:@"temp.pdf"];
NSString *pdfPathOutput = [cacheDir stringByAppendingPathComponent:@"out.pdf"];
// File URLs - bridge casting for ARC
CFURLRef pdfURL1 = (__bridge_retained CFURLRef)[[NSURL alloc] initFileURLWithPath:(NSString *)pdfPath1];//(CFURLRef) NSURL
CFURLRef pdfURL2 = (__bridge_retained CFURLRef)[[NSURL alloc] initFileURLWithPath:(NSString *)pdfPath2];//(CFURLRef)
CFURLRef pdfURLOutput =(__bridge_retained CFURLRef) [[NSURL alloc] initFileURLWithPath:(NSString *)pdfPathOutput];//(CFURLRef)
// File references
CGPDFDocumentRef pdfRef1 = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL1);
CGPDFDocumentRef pdfRef2 = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL2);
// Number of pages
NSInteger numberOfPages1 = CGPDFDocumentGetNumberOfPages(pdfRef1);
NSInteger numberOfPages2 = CGPDFDocumentGetNumberOfPages(pdfRef2);
// Create the output context
CGContextRef writeContext = CGPDFContextCreateWithURL(pdfURLOutput, NULL, NULL);
// Loop variables
CGPDFPageRef page;
CGRect mediaBox;
// Read the first PDF and generate the output pages
NSLog(@"GENERATING PAGES FROM PDF 1 (%i)...", numberOfPages1);
for (int i=1; i<=numberOfPages1; i++) {
page = CGPDFDocumentGetPage(pdfRef1, i);
mediaBox = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
CGContextBeginPage(writeContext, &mediaBox);
CGContextDrawPDFPage(writeContext, page);
CGContextEndPage(writeContext);
}
// Read the second PDF and generate the output pages
NSLog(@"GENERATING PAGES FROM PDF 2 (%i)...", numberOfPages2);
for (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 the output file
CGPDFContextClose(writeContext);
// Release from memory
CFRelease(pdfURL1);
CFRelease(pdfURL2);
CFRelease(pdfURLOutput);
CGPDFDocumentRelease(pdfRef1);
CGPDFDocumentRelease(pdfRef2);
CGContextRelease(writeContext);

rjm619
- 81
- 2
-
Could you please check this SO link http://stackoverflow.com/questions/16646039/how-to-save-created-pdf-in-document-folder-and-merge-in-ios I am running through same problem – Navnath Memane Jun 12 '13 at 12:04
-1
$mergedPath = '/tmp/bulkinvoice_merge_'.$vendor_id.'_'.$randomno.'.pdf';
$filepath = 'http://xyz/'.$vendor_id.'/'.$shipmentId.'_invoice_shipment_label.pdf';
$current = file_get_contents($filepath);
$tempPath = '/tmp/bulkinvoice_'.$vendor_id.'_'.$shipmentId.'.pdf';
chmod($tempPath, 777);
file_put_contents($tempPath,$current);
$pdf = Zend_Pdf::load($tempPath);
foreach($pdf->pages as $page){
$pdfExtract = $ex->clonePage($page);
$pdf2show->pages[] = $pdfExtract;
}
//$pdf2show->pages[] = $ex->clonePage($pdf->pages[0]);
echo "\n [->]Added in merged PDF : ".$shipmentId;
$pdf2show->save($mergedPath);
unlink($tempPath);

Maximilian Ast
- 3,369
- 12
- 36
- 47

Rajesh
- 1