是否可以从Safari中的网站打开PDF以将其保存到本地磁盘?
您可以使用NSURL类将pdf文件下载到文档目录,从而无需在Safari中打开它(并随后终止您自己的应用程序).
UIWebView使得显示外部PDF和本地文件(只需指向正确的文件路径)非常简单,因此您甚至可以将PDF下载到文档文件夹,然后在以后的本地缓存中显示它.
在下面添加了一些示例代码
对于一个更简单的示例,您可能会发现这对您的应用来说是可以接受的; 这会将文件下载到您的文档文件夹但使用阻塞函数(initWithContentsOfURL
),因此您可能会遇到大文件/慢速连接的问题:
(此代码应该是您所需要的,但您可能希望创建一个函数来处理此步骤/处理内存/检查错误等)
//Grab the file from the URL NSData *pdfData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.website.com/doc1.pdf"]]; // Put the data into a file in your Documents folder NSString *docFolder = [[NSString alloc] initWithString:[[[[NSBundle mainBundle] resourcePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"Documents"]]; NSString *filePath = [resourceDocPath stringByAppendingPathComponent:@"doc1.pdf"]; [pdfData writeToFile:filePath atomically:YES];
要为您提供构建的基本示例,以下代码足以在Webview中的Documents文件夹中显示PDF文件:
-(void)viewDidLoad { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *pdfPath = [documentsDirectory stringByAppendingPathComponent:@"doc.pdf"]; // ... webView.scalesPageToFit = YES; webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:pdfPath isDirectory:NO]]]; }
如果您想直接从网站(而不是本地文件)显示PDF,那么您可以pdfPath
包含该文件的完整URL.