2014-02-12 2 views
0

У меня есть старый код, где я создаю PDF-файлы из .xib. Когда я отправляю по электронной почте файл PDF, сгенерированный из xib, я могу получить предварительный просмотр PDF-файла в почтовом окне.Предварительный просмотр PDF в Mailer

С помощью этого кода ниже я могу сгенерировать один файл PDF из группы PDF-файлов, и я могу отправить его по электронной почте, но не покажут предварительный просмотр страницы PDF, чего я пытаюсь достичь.

В документации по этому вопросу ничего не найдено. Есть ли способ отобразить предварительный просмотр PDF, который я отправляю?

Я не хочу просматривать PDF-файл в веб-представлении, предварительный просмотр должен быть в контроллере просмотра почты после его представления. Я могу просмотреть в контроллере просмотра почты файлы PDF, но эти функции (по какой-то причине) перестали работать с блоком кода, который я написал.

//wrap all PDF files together into one PDF file 
    //************************************************************* 


    NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *oldFilePath=[documentsDirectory stringByAppendingPathComponent:@"myPDF.pdf"]; 
    NSURL  *oldFileUrl = [NSURL fileURLWithPath:oldFilePath]; 

    CGContextRef context = CGPDFContextCreateWithURL((__bridge_retained CFURLRef)oldFileUrl, NULL, NULL); 


    for (OBJreport in pages) 
    { 

     // Get the first page from each source document 
     NSString   *pdfPath  = OBJreport.rep_filePath; 
     NSURL    *pdfUrl   = [NSURL fileURLWithPath:pdfPath]; 
     CGPDFDocumentRef pdfDoc   = CGPDFDocumentCreateWithURL((__bridge_retained CFURLRef)pdfUrl); 
     CGPDFPageRef  pdfPage   = CGPDFDocumentGetPage(pdfDoc, 1); 
     CGRect    pdfCropBoxRect = CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox); 

     // Copy the page to the new document 
     CGContextBeginPage(context, &pdfCropBoxRect); 
     CGContextDrawPDFPage(context, pdfPage); 

     // Close the source files 
     CGContextEndPage(context); 
     CGPDFDocumentRelease(pdfDoc); 
    } 


    // Cleanup 
    //************************************************************* 
    CGContextRelease(context); 


    //add the final output file to the pages array for cleanup 
    //************************************************************* 
    OBJ_report *cleanUpOBJreport = [OBJ_report new]; 


    cleanUpOBJreport.rep_filePath = [oldFileUrl path]; 
    cleanUpOBJreport.rep_mimiType = @"application/pdf"; 
    cleanUpOBJreport.rep_data  = [NSData dataWithContentsOfURL:oldFileUrl]; 
    cleanUpOBJreport.rep_fileName = @"myPDF.pdf"; 

    [pages addObject:cleanUpOBJreport]; 




    //mail 
    //************************************************************* 

    MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 

    [mailer setMailComposeDelegate:self]; 
    [mailer setSubject:@"File Attached"]; 
    [mailer setMessageBody:defaultEmailCoverLetter isHTML:NO]; 

    //add all pages 
    [mailer addAttachmentData:cleanUpOBJreport.rep_data mimeType:@"application/pdf" fileName:@"myPDF.pdf"]; 
    [self presentViewController:mailer animated:YES completion:nil]; 


    //cleanup files 
    //************************************************************* 
    OBJ_report *clean_OBJreport = [OBJ_report new]; 
    for (clean_OBJreport in pages) 
    { 
     NSError *error = nil; 
     [[NSFileManager defaultManager] removeItemAtPath:clean_OBJreport.rep_filePath error:&error]; 
    } 

ответ

0

Это очень просто показать предварительный просмотр PDF. Вам просто нужно добавить UIWebView к вашему виду и загрузить его для просмотра PDF.

В вашем случае, позволяет сказать, что вы добавили UIWebView с точки зрения вашего mailer зрения контроллера (или предпочтительно любой другой точки зрения) и связаны, что к свойству выпускном previewerWebview в контроллере представления. Кажется, из вашего кода, что ваш файл PDF создается по URL-адресу, указанному переменной oldFileUrl в вашем классе. Таким образом, вы можете загрузить предварительный просмотр PDF с двумя простыми строками кода:

NSURLRequest *request = [NSURLRequest requestWithURL:oldFileUrl]; 
[self.previewerWebview loadRequest:request]; 

И что должно показывать предварительный просмотр сгенерированного PDF на месте.

+0

Я не хочу просматривать PDF-файл в веб-представлении, предварительный просмотр должен быть в контроллере просмотра почты после его представления. Я могу просмотреть в контроллере просмотра почты файлы PDF, но эти функции (по какой-то причине) перестали работать с блоком кода, который я написал. – user2228755

+0

Я не уверен, что вы понимаете под своим контроллером. Если это настраиваемый контроллер представлений, полученный из 'UIViewConttroller', вы всегда можете добавить' UIWebView' к своему представлению и позволить ему работать как просмотрщик. И если у вас уже есть индивидуальный, но нефункциональный просмотрщик, почему бы вам не поделиться своим кодом, чтобы мы могли решить, почему он не работает? –

+0

Я имею в виду представление по умолчанию, которое отображается при вызове [self presentViewController: mailer animated: YES complete: nil]; спасибо за помощь. – user2228755

0

PDF, когда более одной страницы будет отображаться как значок, а затем просматривает весь документ. Это поведение по умолчанию.

Смежные вопросы