iOS工程中怎么判断下载的流是PDF文件

又是一个因为太简单在网上却搜不到答案的问题。

先拿一个PDF文件转换成NSData类型。通过打印得知,前5个字节为<25504446 2d>,用以表明这个文件的类型是PDF。

<25504446 2d>转成NSString类型就是@"%PDF-"。

因此只要比较前5个字节就能确定请求回来的数据类型。

因此判断方式就是:

说明:data就是网络下载下来的数据。

//
//pdf二进制文件都是以字符串@"%PDF-"开头的
//
NSString *pdfPreDataStr = @"%PDF-";//<25504446 2d>
NSData *pdfPreDataStadic = [pdfPreDataStr dataUsingEncoding:NSUTF8StringEncoding];
//
//获取下载下来的文件前5个字节
//
NSData *pdfPreData = [data subdataWithRange:NSMakeRange(0, 5)];
NSLog(@"%@",pdfPreData);
if ([pdfPreDataStadic isEqualToData:pdfPreData]) {
 //是pdf文件 进行后续操作 

} 

以上这篇iOS工程中怎么判断下载的流是PDF文件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • iOS工程中怎么判断下载的流是PDF文件

    又是一个因为太简单在网上却搜不到答案的问题. 先拿一个PDF文件转换成NSData类型.通过打印得知,前5个字节为<25504446 2d>,用以表明这个文件的类型是PDF. <25504446 2d>转成NSString类型就是@"%PDF-". 因此只要比较前5个字节就能确定请求回来的数据类型. 因此判断方式就是: 说明:data就是网络下载下来的数据. // //pdf二进制文件都是以字符串@"%PDF-"开头的 // NSString

  • 微信小程序实现打开并下载服务器上面的pdf文件到手机

    谈一谈ios的bug: 关于ios系统的bug这块也是快把柚子给逼疯了啊,ios系统是没有文件管理的,柚子用了很多办法,最后终于确定不管用什么办法ios都是实现不了下载的,只能实现在线查看.所以没办法,如果不考虑兼容ios的话,是很简单就能解决的,但是我想没有哪一个小程序会不让你兼容ios的吧! 先看一下不兼容ios系统的下载柚子是怎么实现的吧: 首先我们需要在页面里写入一个按钮,用来触发pdf的打开和下载,写上点击事件 //查看并下载 See_download() { wx.downloadF

  • Flutter集成到已有iOS工程的方法步骤

    前言 之前写过一篇介绍flutter集成到Android工程的文章,这次总结记录一下自己把flutter集成到iOS的流程,以及遇到的问题以及和解决方法供大家参考. 创建flutter_module 要在iOS工程中集成flutter,首先我们需要创建一个flutter_module,创建的方法有两种: 使用Android studio创建 使用Android studio创建在上一篇新版Flutter集成到已有Android项目中有介绍,这里不再赘述. 使用flutter命令创建 在指定目录下

  • iOS 项目中的version和build 详解

    iOS 项目中的version和build Version在plist文件中的key是"CFBundleShortVersionString",标识应用程序的发布版本号,和AppStore上的版本号保持一致.该版本的版本号是三个分隔的整数组成的字符串.第一个整数代表重大修改的版本,如实现新的功能或重大变化的修订.第二个整数表示的修订,实现较突出的特点.第三个整数代表维护版本 Build在plist文件中的key是"CFBundleVersion",标示(发布或者未发

  • iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi

    前言 5G 什么的,还得等苹果API更新啊,不过将来还是这个处理过程就是了. 关于判断当前的网络环境是2G/3G/4G,这个问题以前经常看到,最近在一工程里看到了如果判断的API.而在撸WebRTC音视频通话的时候,看到了Demo中将SCNetworkReachability与其结合,当网络环境改变时,判断当前连接的是什么网络环境,写法欠佳(因为将其与WebRTC的其他逻辑柔和在了一个类).其实只需要将官方的Reachability做一下改进即可. 如何判断当前的网络环境 我们可以利用#impo

  • iOS 11更新后及iPhone X推出后工程中遇到的问题及适配方法

    1.UITableView滑动时右侧的滑动条忽长忽短的乱跳以及MJRefresh上拉刷新死循环 这是因为tableView在iOS11默认使用Self-Sizing,tableView的estimatedRowHeight.estimatedSectionHeaderHeight.estimatedSectionFooterHeight三个高度估算属性由默认的0变成了UITableViewAutomaticDimension,MJRefresh的KVO会监听错误的contentoffset,造成

  • iOS开发中文件的上传和下载功能的基本实现

    文件的上传 说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代码. 主控制器的关键代码: 复制代码 代码如下: YYViewController.m #import "YYViewController.h" #define YYEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding] @interface YYV

  • iOS开发中判断字符串为空的方法

    前言: 判断字符串为空:看似简单的问题,有人会说不就使用[string isEqualToString:@""]或者更简单的string.text == nil就行了嘛.但是并没有考虑到其中存在的一些问题,例如当字符串中存在空格或者换行时或者当请求后台数据时得到的是进行JSON解析的时候, 如果解析出的NSDictionary中某个key对应的value为空, 则系统会把它处理为NSNull类的单例对象.这些情况下,上面的判断方法就不会起到作用. 具体实现: + (BOOL)isBla

  • iOS汇编入门教程之在Xcode工程中嵌入汇编代码的方法

    简介 上一篇文章ARM64汇编基础中介绍了汇编在iOS开发中的应用以及ARM汇编基础知识,本文将介绍在C或Objective-C构成的工程中如何嵌入汇编代码. 注意 在调试ARM汇编时,Xcode的Build对象必须为真机,如果对象为模拟器则是x86汇编. 内联汇编 汇编与C间接通信 在函数中可以直接插入汇编代码来影响函数的运行逻辑,使用的语法为编译指令 __asm__ ,注意插入汇编有可能会被编译器忽略,因此需要加入 __volatile__ 修饰符保证汇编代码有效. 下面给出一个简单的例子,

  • vue中如何下载excel流文件及设置下载文件名

    概述 导出excel需求,当点击下载模板或下载反馈结果,axios发起后端接口请求,返回的数据获取 response 时出现乱码,如图: 现总结如下几种处理方法. 1.通过 url 下载 即后端提供文件的地址,直接使用浏览器去下载 通过window.location.href = 文件路径下载 window.location.href = `${location.origin}/operation/ruleImport/template` 通过 window.open(url, '_blank'

随机推荐