【问题标题】:Opening a PDF in Safari on the iPhone在 iPhone 上的 Safari 中打开 PDF
【发布时间】:2010-04-16 06:57:51
【问题描述】:

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

【问题讨论】:

    标签: iphone objective-c cocoa-touch pdf


    【解决方案1】:

    您可以使用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];
    

    为了给您一个基本的构建示例,以下代码足以在 web 视图中显示 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。

    【讨论】:

    • 嗨,davbryn 有你做这种事情的任何示例或网络链接教程或代码...我想将我的 UIWebView 内容转换为 pdf 并将其存储在文档目录中以供以后使用...
    【解决方案2】:

    Safari 会打开 PDF,但不会保存以供日后检索。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      相关资源
      最近更新 更多