iOS - 开发中加载本地word/pdf文档说明
最近项目中要加载一个本地的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文档说明的更多相关文章
- iOS开发-UIWebView加载本地和网络数据
UIWebView是内置的浏览器控件,可以用它来浏览网页.打开文档,关于浏览网页榜样可以参考UC,手机必备浏览器,至于文档浏览的手机很多图书阅读软件,UIWebView是一个混合体,具体的功能控件内置 ...
- ios开发中加载的image无法显示
昨天遇到一个较奇葩的问题,imageName加载的图片显示不出来,网上查了好多资料还是没找到解决的方法: 之前图片是放在项目中SupportingFiles文件下的,怎么加载都能显示图片,于是将图片拿 ...
- worker中加载本地文件报错的解决方案
如果在一个swf的主线程中加载文件时,报安全沙箱的错误, 网上有诸多的解决方案.但是如果在一个worker中加载本地文件报类似如下的错误: *** 安全沙箱冲突 *** SecurityError: ...
- angular 图片加载失败 情况处理? 如何在ionic中加载本地图片 ?
1.angular 图片加载失败 情况处理 在directive中定义组件,在ng-src错误时,调用err-src app.directive('errSrc',function(){ return ...
- Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构
分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...
- ios UIWebView 在开发中加载文件
UIWebView 在实际应用中加载文件的时候,有两种情况, 1. 实行在线预览 , 2. 下载到本地,再查看 如果是第一种情况: NSURL *url = [NSURL URLWithString: ...
- iOS --- UIWebView的加载本地数据的三种方式
UIWebView是IOS内置的浏览器,可以浏览网页,打开文档 html/htm pdf docx txt等格式的文件. safari浏览器就是通过UIWebView做的. 服务器将MIM ...
- [IOS 开发] 懒加载 (延迟加载) 的基本方式,好处,代码示例
懒加载的好处: 1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强 2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合 ...
- iOS开发图片加载的内存问题及优化方案
原创作者:Magic-Unique 原文地址:https://github.com/Magic-Unique/HXImage猿吧 - 资源共享论坛: http://www.coderbar.cn 做最 ...
随机推荐
- Nginx软件优化
1.1 Nginx优化分类 安全优化(提升网站安全性配置) 性能优化(提升用户访问网站效率) 1.2 Nginx安全优化 1.2.1 隐藏nginx版本信息优化 官方配置参数说明:http://ngi ...
- Android中使用adb访问SQLite的方法
(1)打开命令提示符,输入:adb,按回车,如果得到下面一大堆命令说明(如图 1),表示adb的配置是成功的,如果提示"不是内部或外部命令,也不是可运行的程序或批处理文件",那么需 ...
- Windows Server 2012 R2 或 2016 无法安装 .NET Framework 3.5.1
问题描述 使用 Windows Server 2012 R2 或 Windows Server 2016系统,发现在安装 .NET Framework 3.5.1 时报错,报错内容如下图所示. 原因分 ...
- 启动Jupyter Notebook
按照图所示,在命令下输入ipython notebook 即可启动Jupyter. 启动后的效果:
- 如何查看memcache的性能
memcache的运行状态可以方便的用 stats 命令显示.首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的 ...
- nginx与apache的参考配置
nginx与apache是两大最主流的服务器,功能强大,但配置起来也比较麻烦,对于初学者来讲可能有些地方并不完全清楚其作用,这里搜集了一些配置的作用及其使用方法.其中nginx提供了推荐配置,而apa ...
- 分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计
一. 数据采集 源码GitHub地址 : -- SSH : git@github.com:han1202012/DisplayTest.git; -- HTTP : https://github.co ...
- java中的synchronized同步代码块和同步方法的区别
下面这两段代码有什么区别? //下列两个方法有什么区别 public synchronized void method1(){} public void method2(){ synchronized ...
- Git教程学习(四)
12. 分支管理场景 多人协同工作时,你在优化代码X,需要较长时间才能完成,未完成之前会影响整体代码的使用.于是写完的代码不能提交到版本库,提交就会影响别人使用整体的代码.不提交你就失去了git的版本 ...
- HttpPost请求将json作为请求体传入的简单处理方法
https://www.cnblogs.com/mambahyw/p/7875142.html **************************************************** ...