是否可以从Safari中的网站打开PDF以将其保存到本地磁盘?
答案 0 :(得分:9)
您可以使用NSURL class将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。
答案 1 :(得分:0)
Safari将打开PDF但不保存以供日后检索。