IOS(object-c) 下载查看 PDF 其实还是蛮容易操作的。在下载前,首先要把 IOS 可以保存文件的目录给过一遍:

IOS 文件保存目录

IOS 可以自定义写入的文件目录,是很有限的,只能是这3个目录:

1. NSDocumentDirectory

下载文件到该目录,则该文档可以用 iTunes 直接查看。对于安全性不高,便于浏览的文件,pdf ,可以考虑下载到该目录。、

2. NSLibraryDirectory

下载文件到该目录,则该文档不可用 iTunes 直接查看。只能在 APP 内部查看,对于文件有安全性方面的考虑,可以下载到该 目录。

3.NSCachesDirectory

该目录存放的主要是缓存文件,如 图片的缓存数据等。不适合存放永久性的文件。

本文禁止任何网站转载,严厉谴责那些蛀虫们。
本文首发于,博客园,请搜索:博客园 - 寻自己,查看原版文章
本文首发地址:IOS下载查看PDF文件(有下载进度) - http://www.cnblogs.com/xunziji/p/3242843.html

IOS 下载 pdf 文件

在 IOS 开发过程中一直使用的都是 AFNetworking( https://github.com/AFNetworking/AFNetworking) 负责的网络通信,并且 这个开源的组件很稳定,也很易用,同时使用的人也是蛮多的,网上各种解决方案都很好找。这次下载也是用的 这个组件。

//设置下载文件保存的目录
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString* _filePath = [paths objectAtIndex:]; //File Url
NSString* fileUrl = @"http://.../...pdf"; //Encode Url 如果Url 中含有空格,一定要先 Encode
fileUrl = [fileUrl stringByReplacingOccurrencesOfString:@" " withString:@"%20"]]; //创建 Request
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:fileUrl]];
NSString* fileName = @"down_form.pdf";
NSString* filePath = [_filePath stringByAppendingPathComponent:fileName]; //下载进行中的事件
AFURLConnectionOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:filePath append:NO]; [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
//下载的进度,如 0.53,就是 53%
float progress = (float)totalBytesRead / totalBytesExpectedToRead; //下载完成
//该方法会在下载完成后立即执行
if (progress == 1.0) {
[downloadsTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
}]; //下载完成的事件
//该方法会在下载完成后 延迟 2秒左右执行
//根据完成后需要处理的及时性不高,可以采用该方法
[operation setCompletionBlock:^{ }]; [operation start];
本文禁止任何网站转载,严厉谴责那些蛀虫们。
本文首发于,博客园,请搜索:博客园 - 寻自己,查看原版文章
本文首发地址:IOS下载查看PDF文件(有下载进度) - http://www.cnblogs.com/xunziji/p/3242843.html

查看 PDF 文件

IOS 下查看 PDF 文件的方法是蛮多的,但是 WebView 最简单便捷,虽然不是最强大的。

NSArray* paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString* filePath = [paths objectAtIndex:]; NSString* fileName = @"down_form.pdf";
NSString *path = [filePath stringByAppendingPathComponent:fileName];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path];
if (fileExists) {
path = [Util urlEncodeString:path];
NSURL* url = [[NSURL alloc]initWithString:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
本文禁止任何网站转载,严厉谴责那些蛀虫们。
本文首发于,博客园,请搜索:博客园 - 寻自己,查看原版文章
本文首发地址:IOS下载查看PDF文件(有下载进度) - http://www.cnblogs.com/xunziji/p/3242843.html

IOS下载查看PDF文件(有下载进度)的更多相关文章

  1. 在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all

    在js内生成PDF文件并下载的功能实现(不调用后端),以及生成pdf时换行的格式不被渲染,word-break:break-all 前天来了个新需求, 有一个授权书的文件要点击下载, 需要在前端生成, ...

  2. 【转载】Chrome 0day漏洞:不要用Chrome查看pdf文件

    英文原文地址:https://blog.edgespot.io/2019/02/edgespot-detects-pdf-zero-day-samples.html 中文原文地址:https://ww ...

  3. Nginx环境下,PHP下载,中文文件,下载失效(英文可以下载)怎么解决呢?

    参考出处: http://www.imooc.com/qadetail/76393 Nginx环境下,PHP下载,中文文件,下载失效(英文可以下载)怎么解决呢? 背景介绍: 文件名  为英文时可以下载 ...

  4. 用apache做为代理下载本地pdf文件

    有一些公司会用apache做为代理,下载服务器上的pdf文件.以下是apache做为代理的配置 一. 环境 centos6.5  192.168.69.3 二. yum安装apache 服务 [zxj ...

  5. MyEclipse下直接查看class文件 jadnt158下载

    在没有源文件的情况下,通过倒入两个jar文件就可以实现 文件链接:http://pan.baidu.com/share/link?shareid=372924537&uk=2435113113 ...

  6. SQL 横转竖 、竖专横 (转载) 使用Dapper.Contrib 开发.net core程序,兼容多种数据库 C# 读取PDF多级书签 Json.net日期格式化设置 ASPNET 下载共享文件 ASPNET 文件批量下载 递归,循环,尾递归 利用IDisposable接口构建包含非托管资源对象 《.NET 进阶指南》读书笔记2------定义不可改变类型

    SQL 横转竖 .竖专横 (转载)   普通行列转换 问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 ...

  7. C# 生成pdf文件客户端下载

    itextsharp.dll 下载:http://sourceforge.net/projects/itextsharp/ 程序需引用:itextsharp.dll,itextsharp.pdfa.d ...

  8. WPF中查看PDF文件之MoonPdfLib类库

    最近研究了两种PDF文件查看器,MoonPdfLib或者AdobeReader. 今天先说第一种,在网上扒到的很好的WPF中用MoonPdf类库来展示PDF文件. 在Sourceforge上下载到Mo ...

  9. 浏览器在线查看pdf文件 pdf.js的使用教程

    谷歌浏览器可以直接在线查看pdf,而IE内核浏览器无法在线查看,默认是下载. 这里用到的是pdf.js,不仅支持IE内核浏览器,而且兼容手机查看pdf 官网地址:http://mozilla.gith ...

随机推荐

  1. [VijosP1764]Dual Matrices 题解

    题目大意: 一个N行M列的二维矩阵,矩阵的每个位置上是一个绝对值不超过1000的整数.你需要找到两个不相交的A*B的连续子矩形,使得这两个矩形包含的元素之和尽量大. 思路: 预处理,n2时间算出每个点 ...

  2. swift-string(字符串的一些语法)

    1 isEmpty 返回一个布尔值,确定该字符串是否为空 2 hasPrefix(prefix: String) 函数检查给定的参数字符串是否以 string 为前缀 3 hasSuffix(suff ...

  3. C# base64 Img 互转

    [AcceptVerbs(HttpVerbs.Post)] public JsonResult Upload(HttpPostedFileBase fileData) { try { if (file ...

  4. Android面试技巧 找安卓开发工作同学可以看看!

    马上就要学完安卓毕业了,最近总想写点什么.今天把自己这段时间的学习心得以及面试时的经验分享给大家: 关于我为什么选择学习安卓并且来华清远见学习,说来话长,但是我要长话短说!首先我以前的实习工作工资太低 ...

  5. OC--init,initialize,initWithCoder:,initWithFrame:各方法的区别和加载顺序

    1.先把OC的类分清楚各有什么方法 普通类的方法 init initialize: 控制器类的方法 init initialize: initWithCoder: UI控件类的方法 init init ...

  6. set 集合容器实现元素的插入与中序排序

    创建set 对象,方法类似于 vector set< int > s ; 初始化: set<int>s; s.insert(); s.insert(); s.insert(); ...

  7. 字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串

    关于字符串的研究,目前已经有两篇. 原理篇:字符串混淆技术在.NET程序保护中的应用及如何解密被混淆的字符串  实践篇:字符串反混淆实战 Dotfuscator 4.9 字符串加密技术应对策略 今天来 ...

  8. Visual Studio 2013 Web开发

    cnbeta新闻:微软正式发布Visual Studio 2013 RTM版,微软还发布了Visual Studio 2013的最终版本..NET 4.5.1以及Team Foundation Ser ...

  9. 【安装PHP】如何在openSUSE42.1下编译安装PHP7

    首先推荐一篇文章PHP 7 Release Date Arrived: Will Developers Adopt PHP 7? - PHP Classes blog. 里面说到是否会去使用PHP7, ...

  10. SQL Server 执行计划缓存

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/内存池/缓冲区 概述 了解执行计划对数据库性能分析很重要,其中涉及到了语句性能分析与存储,这也是写这篇文章的目的,在了解执行计划之 ...