2014-07-17 1 views
0

내 앱에는 수 백 페이지의 PDF가 있습니다.iOS 앱에서 하나의 PDF 페이지 선택

사용자가 새로운 단일 페이지 PDF를 작성하여 이메일을 보내주기를 원합니다.

단일 페이지 PDF는 응용 프로그램에서 큰 PDF의 주어진 페이지가됩니다.

어떻게하면됩니까? 이메일을 보내기

은 간단하다 :

- (void)email:(UIButton *)sender 
{ 
    NSString *emailSubject = @"subject"; 
    NSString *messageBody = [NSString stringWithFormat:@"%ld", sender.tag]; 

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init]; 
    mc.mailComposeDelegate = self; 
    [mc setSubject:emailSubject]; 
    [mc setMessageBody:messageBody isHTML:NO]; 
    // [mc addAttachmentData:myData mimeType:@"application/pdf" fileName:@"thePDF.pdf"]; 

    [self presentViewController:mc animated:YES completion:NULL]; 
} 

나는 하나의 페이지 된 PDF 여기

+0

여기는 PDF 파일을 처리하는 방법입니다. http://overactiverexburg.com/PDFWrapper.m – user906357

답변

0

될 것 'MYDATA'를 만드는 방법을 단지 확실하지 않다 나는 문제를 해결하는 방법입니다

- (void)emailAction:(UIButton *)sender 
{ 
    NSString *emailSubject = @"Subject"; 
    NSString *messageBody = @"message"; 

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init]; 
    mc.mailComposeDelegate = self; 
    [mc setSubject:emailSubject]; 
    [mc setMessageBody:messageBody isHTML:NO]; 
    [mc addAttachmentData:[self getPage:sender.tag+1] mimeType:@"application/pdf" fileName:@"thePDF.pdf"]; 

    [self presentViewController:mc animated:YES completion:NULL]; 
} 

- (NSMutableData *)getPage:(NSInteger)pageNumber 
{ 
    CGPDFDocumentRef SourcePDFDocument = CGPDFDocumentCreateWithURL((CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myPDF" ofType:@"pdf"]]); // Create the CGPDFDocument from the URL 
    if (SourcePDFDocument == NULL) { 
     return nil; 
    } 

    // Reference to Page current Page 
    CGPDFPageRef SourcePDFPage = CGPDFDocumentGetPage(SourcePDFDocument, pageNumber); 

    if (SourcePDFPage == NULL) { 
     self.view.backgroundColor = [UIColor blueColor]; 
    } 

    CGRect mediaBox = CGPDFPageGetBoxRect(SourcePDFPage, kCGPDFMediaBox); 
    NSMutableData *outputData = [NSMutableData data]; 
    CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData((__bridge CFMutableDataRef)outputData); 
    CGContextRef context = CGPDFContextCreate(consumer, &mediaBox, NULL); 
    // draw 
    CGContextBeginPage(context, &mediaBox); 
    CGContextDrawPDFPage(context, SourcePDFPage); 
    CGContextEndPage(context); 
    // cleanup 
    CGDataConsumerRelease(consumer); 
    CGContextRelease(context); 

    return outputData; 
} 
관련 문제