iOS合并PDF文件
我想在我的应用程序合并两个PDF文件。 但是,我的应用程序不断创build组合文件引用的点。 (见代码注释) 有人可以在这里指出我正确的方向吗? 谢谢。
- (void) mergerPDFFiles : (NSString*) firstPDFFile : (NSString* ) secondPDFFile { //set path to plist to read in docs directory NSString* pdf1Path = [documentsDirectory stringByAppendingPathComponent:firstPDFFile]; NSString* pdf2Path = [documentsDirectory stringByAppendingPathComponent:secondPDFFile]; BOOL hasError = NO; NSMutableString* strErrMsg = [[NSMutableString alloc] init]; //check to see if the file exists if (![fileManager fileExistsAtPath:pdf1Path]) { hasError = YES; [strErrMsg appendString:[NSString stringWithFormat:@"Could not find the PDF just created: %@", firstPDFFile]]; } //check to see if the file exists if (![fileManager fileExistsAtPath:pdf2Path]) { hasError = YES; [strErrMsg appendString:[NSString stringWithFormat:@"Could not find the marketing materials PDF: %@", secondPDFFile]]; } if (!hasError) { NSArray* arrPDFPaths = [[NSArray alloc] initWithObjects:pdf1Path, pdf2Path, nil]; //make a new file name NSArray* arrPDF1Split = [firstPDFFile componentsSeparatedByString:@"."]; NSString* strNewPDF = [NSString stringWithFormat:@"%@_Complete", [arrPDF1Split objectAtIndex:0]]; // File paths NSString* pdfPathOutput = [documentsDirectory stringByAppendingPathComponent:strNewPDF]; /******************DIES HERE!***********************************/ CFURLRef pdfURLOutput = (__bridge CFURLRef)[[NSURL alloc] initFileURLWithPath:pdfPathOutput]; NSInteger numberOfPages = 0; // Create the output context CGContextRef writeContext = CGPDFContextCreateWithURL(pdfURLOutput, NULL, NULL); /********************ERROR MESSAGE****************************** CGDataConsumerCreateWithFilename: failed to open `ers/msg-surans/Library/Application Support/iPhone Simulator/6.0/Applications/299DBD9D-738F-49E0-B593-159033DDE39B/Documents/OER_Pro_Cost_Test_Complete' for writing: No such file or directory. ****************************************************************/ //loop through the pdfs for(int i=0; i<arrPDFPaths.count; i++) { //get the file NSString* pdfSource = [arrPDFPaths objectAtIndex:i]; //set a CFURL to the pdf CFURLRef pdfURL = (__bridge CFURLRef)[[NSURL alloc] initFileURLWithPath:pdfSource]; //set a reference to the pdf CGPDFDocumentRef pdfRef = CGPDFDocumentCreateWithURL((CFURLRef) pdfURL); numberOfPages = CGPDFDocumentGetNumberOfPages(pdfRef); //set some ivars CGPDFPageRef page; CGRect mediaBox; // Read the first PDF and generate the output pages NSLog(@"GENERATING PAGES FROM PDF (%@)...", pdfSource); for (int x=1; x<=numberOfPages; x++) { page = CGPDFDocumentGetPage(pdfRef, x); 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); } else { UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Error Merging PDF Files" message: strErrMsg delegate: nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; } }
我认为这是你的documentsDirectory
variables,没有设置正确的。 检查它如何获得它的价值。 但是ers/msg-surans/
看起来不正确。
应该是这样的:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0];