最近项目中要加载一个本地的word/pdf等文件比如《用户隐私政策》《用户注册说明》,有两种方法加载

 > 用QLPreviewController控制器实现

   步骤 :  > 导入库文件 : QuickLook.framework

             > 导入头文件 : <QuickLook/QuickLook.h>

             > 创建我们的对象,然后设置dataSource

 > 用webView来加载word文件

以上两种方法都先把本地word/pdf文件拖入当我们的项目中

有时候会出现path为nil,看看是不是没加进Build Phases-Copy Bundle Resources资源
/*
方法1使用:
1、导入库文件:QuickLook.framework
2、导入头文件:<QuickLook/QuickLook.h>
*/
#import <QuickLook/QuickLook.h> @interface ViewController ()<QLPreviewControllerDataSource,UIWebViewDelegate> @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// 方法1:用QLPreviewController控件实现
[self QLPreviewControllerLoad]; // 方法2:用WebView的方法加载word
[self webViewLoad]; } #pragma mark -- QLPreviewController
- (void)QLPreviewControllerLoad {
self.view.backgroundColor = [UIColor lightGrayColor];
QLPreviewController *qlpVC = [[QLPreviewController alloc] init];
qlpVC.dataSource = self;
[self presentViewController:qlpVC animated:YES completion:nil];
} - (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {
return ;//需要显示文件的个数
}
- (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {
NSString *path = [[NSBundle mainBundle] pathForResource:@"顺道用户隐私政策.docx" ofType:nil];
NSURL *url = [NSURL fileURLWithPath:path];
return url;
} #pragma mark -- WebView
- (void)webViewLoad {
NSString *path = [[NSBundle mainBundle] pathForResource:@"顺道用户隐私政策" ofType:@"docx"];
NSURL *url = [NSURL fileURLWithPath:path];
UIWebView *webView = [[UIWebView alloc] init];
webView.frame = CGRectMake(, , kScreen_width, kScreen_height);
webView.backgroundColor = [UIColor whiteColor];
[webView loadRequest:[NSURLRequest requestWithURL:url]];
[webView sizeToFit];
webView.scalesPageToFit = YES;
webView.delegate = self;
[self.view addSubview:webView]; } - (void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"webViewDidFinishLoad");
NSString *javascript = [NSString stringWithFormat:@"var script = document.createElement('script');"
"script.type = 'text/javascript';"
"script.text = \"function ResizeImages() { "
"var myimg;"
"var maxwidth=%f;" //缩放系数
"for(i=0;i <document.images.length;i++){"
"myimg = document.images[i];"
"if(myimg.width > maxwidth){"
"var scale = myimg.width/myimg.height;"
"myimg.width = maxwidth;"
"myimg.height = maxwidth/scale;"
"}"
"}"
"}\";"
"document.getElementsByTagName('head')[0].appendChild(script);",CGRectGetWidth(webView.frame)];
[webView stringByEvaluatingJavaScriptFromString:javascript]; //添加调用JS执行的语句
[webView stringByEvaluatingJavaScriptFromString:@"ResizeImages();"];
}

iOS - 开发中加载本地word/pdf文档说明的更多相关文章

  1. iOS开发-UIWebView加载本地和网络数据

    UIWebView是内置的浏览器控件,可以用它来浏览网页.打开文档,关于浏览网页榜样可以参考UC,手机必备浏览器,至于文档浏览的手机很多图书阅读软件,UIWebView是一个混合体,具体的功能控件内置 ...

  2. ios开发中加载的image无法显示

    昨天遇到一个较奇葩的问题,imageName加载的图片显示不出来,网上查了好多资料还是没找到解决的方法: 之前图片是放在项目中SupportingFiles文件下的,怎么加载都能显示图片,于是将图片拿 ...

  3. worker中加载本地文件报错的解决方案

    如果在一个swf的主线程中加载文件时,报安全沙箱的错误, 网上有诸多的解决方案.但是如果在一个worker中加载本地文件报类似如下的错误: *** 安全沙箱冲突 *** SecurityError: ...

  4. angular 图片加载失败 情况处理? 如何在ionic中加载本地图片 ?

    1.angular 图片加载失败 情况处理 在directive中定义组件,在ng-src错误时,调用err-src app.directive('errSrc',function(){ return ...

  5. Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构

    分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...

  6. ios UIWebView 在开发中加载文件

    UIWebView 在实际应用中加载文件的时候,有两种情况, 1. 实行在线预览 , 2. 下载到本地,再查看 如果是第一种情况: NSURL *url = [NSURL URLWithString: ...

  7. iOS --- UIWebView的加载本地数据的三种方式

    UIWebView是IOS内置的浏览器,可以浏览网页,打开文档  html/htm  pdf   docx  txt等格式的文件.  safari浏览器就是通过UIWebView做的. 服务器将MIM ...

  8. [IOS 开发] 懒加载 (延迟加载) 的基本方式,好处,代码示例

    懒加载的好处: 1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 ...

  9. iOS开发图片加载的内存问题及优化方案

    原创作者:Magic-Unique 原文地址:https://github.com/Magic-Unique/HXImage猿吧 - 资源共享论坛: http://www.coderbar.cn 做最 ...

随机推荐

  1. SpringMVC类型转换、数据绑定详解

    public String method(Integer num, Date birth) { ... } Http请求传递的数据都是字符串String类型的,上面这个方法在Controller中定义 ...

  2. MongoDB学习笔记(一)安装配置

    文档存储:文档存储一般用类似json的格式存储,存储的内容是文档型的. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB 文档类似于 JSON ...

  3. 为什么和什么是 DevOps?

    原文地址 本文内容 为什么 DevOps 什么是 DevOps DevOps 所带来的好处 如何将 DevOps 落到实处? 关于 DevOps 的澄清 参考资料 编写软件之所以难,是因为没有哪两个软 ...

  4. windows多线程同步--事件

    推荐参考博客:秒杀多线程第六篇 经典线程同步 事件Event   事件是内核对象,多用于线程间通信,可以跨进程同步 事件主要用到三个函数:CreateEvent,OpenEvent,SetEvent, ...

  5. PL/SQL学习笔记之存储过程

    一:PL/SQL的两种子程序 子程序:子程序是执行一个特定功能.任务的程序模块.PL/SQL中有两种子程序:函数  和  过程. 函数:主要用于计算并返回一个值. 过程:没有直接返回值,主要用于执行操 ...

  6. Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点( FROM IBM)

    Eclipse 插件开发 -- 深入理解菜单(Menu)功能及其扩展点 菜单是各种软件及开发平台会提供的必备功能,Eclipse 也不例外,提供了丰富的菜单,包括主菜单(Main Menu),视图 / ...

  7. 用 JAAS 和 JSSE 实现 Java 安全性

    JAAS 和 JSSE 概述 JAAS 提供了一种灵活的.说明性的机制,用于对用户进行认证并验证他们访问安全资源的能力.JSSE 定义了通过安全套接字层(SSL)进行安全 Web 通信的一种全 Jav ...

  8. swift3 单例写法

    import UIKit class SingleOnce { // 单例 static let shared = SingleOnce.init() private init(){} // 其他方法 ...

  9. [Aaronyang] 写给自己的WPF4.5 笔记17[Page实现页面导航]

    1. 第一个Page页使用 新建PageDemo解决方案,默认wpf应用程序 右键项目新建页,然后指定App.xaml的默认启动窗口,为Page1.xaml,F5运行项目 文章内容已经迁移http:/ ...

  10. 转 可能是最漂亮的Spring事务管理

    Snailclimb 2018年05月21日阅读 4246 可能是最漂亮的Spring事务管理详解 Java面试通关手册(Java学习指南):github.com/Snailclimb/… 微信阅读地 ...