我有一些舊代碼,我從.xib創建PDF文件。當我通過電子郵件發送從xib生成的PDF文件時,我可以在郵件窗口中預覽PDF。在Mailer中預覽PDF
使用下面的代碼,我可以從一個PDF組生成一個PDF文件,我可以通過電子郵件發送它,但不會顯示PDF頁面的預覽,這是我試圖實現的目標。
我在有關此文檔中找不到任何內容。有沒有辦法顯示我發送的PDF預覽?
我不想在Web視圖中預覽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];
}
我不想在Web視圖中預覽PDF,預覽應該在呈現時位於郵件視圖控制器中。我可以使用PDF文件在郵件視圖控制器中預覽,但該功能(出於某種原因)停止與我編寫的代碼塊一起工作。 – user2228755
我不確定你的郵件視圖控制器是什麼意思。如果這是從'UIViewConttroller'派生的自定義視圖控制器,則可以隨時在其視圖中添加'UIWebView'並讓它作爲預覽器工作。如果你已經有一個量身定製的但功能不佳的預覽器,爲什麼不分享它的代碼,以便我們可以決定它爲什麼不起作用? –
我的意思是在調用時顯示的默認視圖[self presentViewController:mailer animated:YES completion:nil];感謝您的幫助。 – user2228755