我使用以下代码从网站下载pdf文件,然后在uiwebview中显示
NSString *url = [NSString stringWithString:[[[popOverContent currentValues] objectAtIndex:0]objectForKey:@"Web"]];
// Determile cache file path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [NSString stringWithFormat:@"%@/%@", [paths objectAtIndex:0],@"index.pdf"];
// Download and write to file
NSURL *url2 = [NSURL URLWithString:url];
NSData *urlData = [NSData dataWithContentsOfURL:url2];
[urlData writeToFile:filePath atomically:YES];
fileToAtatch = urlData;
// Load file in UIWebView
[self.myWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];
此时所有工作都按预期进行,但后来当我使用以下代码使用mfmailcomposer将pdf文件发送到电子邮件时,我遇到了问题。
-(IBAction)EmailPressed:(id)sender
{
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *viewController = [[MFMailComposeViewController alloc] init];
viewController.mailComposeDelegate = self;
NSString *query = @"please find atatched the requested data sheet";
[viewController setSubject:[popOverContent selectedSize]];
[viewController setMessageBody:query isHTML:NO];
[viewController addAttachmentData:fileToAtatch mimeType:@"application/pdf" fileName:[popOverContent selectedSize]];
[self presentModalViewController:viewController animated:YES];
}
}
此代码完全按预期工作,多页pdf按预期附加。
如果我在iPad上用ios 5.0.1测试应用程序发送电子邮件给自己,当我点击电子邮件中的pdf图标时,pdf没有打开,预览只是坐在那里有一个uiprogress指示器旋转。 但是,如果我在ipad2上使用ios 6.0.1以相同的方式测试应用程序,则pdf文件打开没有任何问题。 它也适用于iphone 5以及带有山狮的Mac。
所以发生什么事了? 任何人都可以告诉我,我的代码和实现有什么问题,在ipad 1上给我这个奇怪的行为但不在ipad 2上等。
请告知
感谢
答案 0 :(得分:1)
我终于解决了这个问题并通过更改我的代码解决了这个问题,如下所示
fileName = [selectedSizeToUse stringByAppendingString:@".pdf"];
[mailController setSubject:selectedSizeToUse];
[mailController addAttachmentData:fileToAtatch mimeType:@"application/pdf" fileName:fileName];
似乎对于ios5实现,pdf文件需要在预览应用程序中识别.pdf扩展名,而在iOS 6实现中,预览应用程序非常聪明,可以显示没有.pdf扩展名的pdf。
希望这可以帮助其他人陷入困境