+ (void)downLoadPdf:(NSString *)url pdf_id:(NSString *)pdf_id block:(APIFilePath)pdfFilePath {
    NSMutableDictionary *mPdf_dic = [NSMutableDictionary dictionaryWithDictionary:[Tool getLocalKey:PDFLOCAL_DIC]];
    NSURL *URL = [NSURL URLWithString:url];
    NSURLRequest *request = [NSURLRequest requestWithURL:URL];
   
    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
   
    NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
       
        NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
        NSLog(@"###%@", targetPath);  //原始文件
        NSLog(@"**%@", [response suggestedFilename]);  //文件名
        return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
       
    } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
        NSLog(@"File downloaded to: %@", filePath);//下载成功后本地保存id以及文件路径
        NSString *stringUrl = [filePath absoluteString];
        mPdf_dic[pdf_id] = stringUrl;
        NSDictionary *pdfDic = [NSDictionary dictionaryWithDictionary:mPdf_dic];
        [Tool saveLocalvalue:pdfDic key:PDFLOCAL_DIC];
        pdfFilePath(stringUrl);
    }];
    [downloadTask resume];
}
 
*********************************************************************************************
查看文档时判断本地是否已经下载
#pragma mark - read
- (void)read {
    //本地已下载pdf文件
    NSDictionary *pdfDic = [Tool getLocalKey:PDFLOCAL_DIC];
    if (pdfDic == nil) {
        [Tool saveLocalvalue:pdfDic key:PDFLOCAL_DIC];
    }
    //文件路径
    NSString *filePathLocal;
    NSString *fileUrl = @"pdf的URL";
    NSString *fileKey = @"1471509244417_1471509259460";
    NSArray *keys = [pdfDic allKeys];
    BOOL isDownload = NO; //是否已经下载
    for (NSString *key in keys) {
        if ([key isEqualToString:fileKey]) {
            isDownload = YES;
            break;
        } else {
            isDownload = NO;
        }
    }
    if (isDownload) {
        filePathLocal = pdfDic[fileKey];
        [self openPdf:filePathLocal];
    } else {
         [WYAPI downLoadPdf:fileUrl pdf_id:fileKey block:^(NSString *filePath) {
             [self openPdf:filePath];
         }];
    }
}

iOS AFNetWorking 下载pdf文档的更多相关文章

  1. C#(MVC) Word 替换,填充表格,导出并下载PDF文档

    近期做一个关于C# 操作 Word 模板 文档的功能模块,查阅资料,最终完美完成任务,记录下来,以便后面还会用到.

  2. java实现从url路径中下载pdf文档到本地

    package com.cellstrain.icell.util; import java.io.*;import java.net.*; public class DownloadPdf { /* ...

  3. 如何教你在NIPS会议上批量下载历年的pdf文档(另附04~14年NIPS论文下载链接)

    如何获得NIPS会议上批量下载的链接? NIPS会议下载网址:http://papers.nips.cc/ a.点击打开上述网站,进入某一年的所有会议,例如2014年,如下图 b.然后对着当前网页点击 ...

  4. opencart 3添加pdf文档下载功能

    opencart 3适合做外贸商城,如果能在产品页那边添加pdf文档功能是最好的,符合国外用户的使用习惯,增加客户的黏性.其实opencart已经有一个downloadable product可下载产 ...

  5. 下载网页中的 pdf 各种姿势,教你如何 carry 各种网页上的 pdf 文档。

    关联词: PDF 下载 FLASH 网页 HTML 报告 内嵌 浏览器 文档 FlexPaperViewer swfobject. 这个需求是最近帮一个妹子处理一下各大高校网站里的 PDF 文档下载, ...

  6. 一起学微软Power BI系列-官方文档-入门指南(7)发布与共享-终结篇+完整PDF文档

    接触Power BI的时间也只有几个月,虽然花的时间不多,但通过各种渠道了解收集,谈不上精通,但对一些重要概念和细节还是有所了解.在整理官方文档的过程中,也熟悉和了解了很多概念.所以从前到后把微软官方 ...

  7. 我把阿里、腾讯、字节跳动、美团等Android性能优化实战整合成了一个PDF文档

    安卓开发大军浩浩荡荡,经过近十年的发展,Android技术优化日异月新,如今Android 11.0 已经发布,Android系统性能也已经非常流畅,可以在体验上完全媲美iOS. 但是,到了各大厂商手 ...

  8. C# 复制PDF页面到另一个PDF文档

    C# 复制PDF页面到另一个PDF文档 有时候我们可能有这样一个需求,那就是把PDF页面从一个PDF文档复制到另一个PDF文档中.由于PDF文档并不像word文档那样好编辑,因此复制也相对没有那么容易 ...

  9. 利用Java动态生成 PDF 文档

    利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...

随机推荐

  1. Spark SQL External Data Sources JDBC官方实现写测试

    通过Spark SQL External Data Sources JDBC实现将RDD的数据写入到MySQL数据库中. jdbc.scala重要API介绍: /** * Save this RDD ...

  2. Archlinux添加MP3播放器

    方法1: # pacman -S mplayer From: http://www.linuxdiyf.com/viewarticle.php?id=89207 用mplayer循环播放音乐:mpla ...

  3. springMVC使用与生成序列号

    springMVC使用与生成序列号 我是以springMVC的方式提供序列号 代码可以直接在项目中用 第一步:controller类 @Autowired private PkGenerator pk ...

  4. 三层VS控制器

    三层中的Model 是数据模型 与数据库字段一一对应而mvc中的model是 显示模型,指在页面的显示字段的列一一对应,不一定在数据库中有这样的一个表,如当页 面上要显示多个表的综合信息时. 当在Co ...

  5. 学习java第二天

    首先我们要知道,java是特分大小写的,基本上分为 类名 我们统一小写 如果是多级的 我们用点来隔开 比如 file.test.number1,类或者接口的话基本上大家都是首字母大写,常量全部大写,然 ...

  6. Nginx 学习

    1.Nginx编译安装 nginx依赖于pcre库,需要先安装pcre(二进制包,跟正则表达式有关),pcre-devel(头文件) configure  --prefix=/usr/local/ng ...

  7. 循序渐进Python3(七) --1-- 面向对象

    Python 面向对象 什么是面向对象编程? 面向对象编程是一种程序设计范式 对现实世界建立对象模型 把程序看作不同对象的相互调用 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Py ...

  8. windows10-桌面图标不见了,资源管理器的桌面中可以看到??

    问题描述: 1. 桌面的图标,在桌面上看不到, 但是在通过资源管理器可以看到, 图标仍然在桌面 2. 桌面仍然可以右击, 就是看不见新建或者拷贝到桌面的所有图标 解决方案: Google 后请参考: ...

  9. JSF2 下 taglib 的问题

    在jsf1使用 taglib 定义 标签出现 The absolute uri: http://java.sun.com/jsf/core cannot be resolved in either w ...

  10. IP验证

    function isIP(str) { var IP = '(25[0-5]|2[0-4]\\d|1\\d\\d|\\d\\d|\\d)'; var IPdot = IP + '\\.'; var ...