在iPhone上的Safari中打开PDF

时间:2010-04-16 06:57:52

标签: iphone objective-c cocoa-touch pdf

是否可以从Safari中的网站打开PDF以将其保存到本地磁盘?

2 个答案:

答案 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但不保存以供日后检索。