js打开服务器pdf文件,iOS使用pdf.js打开PDF文件
最近研究了下iOS打开PDF文件的方式,由于项目需要在浏览PDF文件时能使用HTML格式文件,调研了一下iOS中打开PDF文件的几种方式,发现pdf.js开源库可以做到这一点,通过调用js在线预览PDF文件,预览时将PDF文件转为HTML标签,而且集成方便。
教程中把pdf.js作为服务端的步骤:
clone工程到本地:
$ git clone git://github.com/mozilla/pdf.js.git
$ cd pdf.js
安装node.js,然后安装gulp工具(若已有可跳过):
$ npm install --global gulp-cli
在pdf.js工程目录里执行:
$ npm install -g gulp-cli
安装好gulp之后在源代码使用npm安装模块:
$ npm install
启动gulp构建本地服务器:
$ gulp server
将pdf.js集成到iOS工程中的步骤:
构建pdf.js:
$ gulp generic
可以看到在如下图目录中有generic文件夹,里面的内容即是我们需要集成到iOS项目中的:
generic文件夹大小为8.8MB,如果你觉得把这个文件夹导入到项目中太大了的话,你可以使用如下命令:
$ gulp minified
可以看到在如下图目录中有minified文件夹,大小为8MB:
如果你觉得8MB还是特别大的话,你可以删掉一些文件,只保留最重要的js文件,删除后的文件目录如下图,大小为1.3MB:
上述三种方式得到的目录下的文件即为需要导入到iOS工程中的,如果对文件大小要求苛刻,可以使用删减后的minified目录,如果对文件大小没那么苛刻,可以导入generic,删减后的可能稳定性不如原版本,我在测试的时候发现删减后的目录在连接safari调试的时候会崩溃,其他问题尚未发现;
新建iOS工程,将minified或者generic复制到工程目录中:
拖拽复制的文件目录到工程中,选择folder references(亲测选择groups没有效果,原因未知):
新建PDFWebView继承自UIWebView,添加如下代码:
- (void)loadPDFFile:(NSString*)filePath {
_filePath = filePath;
NSString *viwerPath = [[NSBundle mainBundle] pathForResource:@"viewer" ofType:@"html" inDirectory:@"minified/web"];
NSString *urlStr = [NSString stringWithFormat:@"%@?file=%@#page=1",viwerPath,filePath];
urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
[self loadRequest:request];
}
在控制器里添加如下代码:
- (void)viewDidLoad {
[super viewDidLoad];
PDFWebView *webView = [[PDFWebView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:webView];
NSString *pdfFilePath = [[NSBundle mainBundle] pathForResource:@"git搭建" ofType:@"pdf"];
[webView loadPDFFile:pdfFilePath];
}
运行后效果如图:
20200723更新:
评论很多小伙伴说WKWebview的例子,我更新了github,有需要可以去看看,主要就是fileURL这个东西有点变化,代码在下面:
WKWebViewConfiguration * configuration = [[WKWebViewConfiguration alloc] init];
[configuration.preferences setValue:@"TRUE" forKey:@"allowFileAccessFromFileURLs"];
PDFWebView *webView = [[PDFWebView alloc] initWithFrame:self.view.bounds configuration:configuration];
[self.view addSubview:webView];
NSURL *pdfFileURL = [[NSBundle mainBundle] URLForResource:@"git.pdf" withExtension:nil];
[webView loadPDFFile:pdfFileURL];
- (void)loadPDFFile:(NSURL*)filePath;
{
_filePath = filePath;
NSString *viwerPath = [[NSBundle mainBundle] pathForResource:@"viewer" ofType:@"html" inDirectory:@"minified/web"];
NSString *urlStr = [NSString stringWithFormat:@"file://%@?file=%@#page=1",viwerPath,filePath];
urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
[self loadRequest:request];
}
参考资料
js打开服务器pdf文件,iOS使用pdf.js打开PDF文件相关推荐
- python如何打开服务器文件大小,关于字符串:Python可以打开的文件的最大大小?...
我在python中打开了一个8 MB的文件,因为我想批量更改各种类型的文件名.我检查并将文件加载到一个字符串中,然后使用字符串方法replace替换所有内容.然后我注意到只有一半的文件被替换:就好像p ...
- 无法打开服务器性能对象,日志提示:无法打开服务器服务性能对象,如何解决?...
分享者:iweb2020 阅读量:14322 日志提示:无法打开服务器服务性能对象,如何解决? 小金子目录实践感悟:修改后,有时需要多重启几次,才会生效.计算机具有相对不确定性. DLL" ...
- js打开服务器缓存文件夹路径,浅谈微信页面入口文件被缓存解决方案
缓存对于前端页面来说,是加速页面加载的利器之一,但也同时带来了很多问题,比如新版本发布之后,怎么替换客户端上的缓存文件呢?大家一般的的解决方案主要有以下几种形式, 一般情况 1.添加版本号,在静态资源 ...
- ios 与服务器传递文件,iOS开发 如何跨系统传输文件 如:茄子快传、快牙
0.分析 不管是不是跨平台,利用网络来传输数据,必须先规定好链接方式(网络)和通讯方式(协议). 按照现在的应用场景,分析,其实需要实现的是一个点对点(P2P)交换数据的功能: 网络发现(两个设备相互 ...
- js获取服务器响应头信息,请问,js中请求头信息和返回头信息的方法
$.ajax({ type: 'HEAD', // 获取头信息,type=HEAD即可 url : window.location.href, complete: function( xhr,data ...
- 使用PDF.js实现前端和手机端网页预览PDF文件(可定制,支持本地文件、Base64编码和远程URL跨域方式)
1.插件下载地址:https://mozilla.github.io/pdf.js/ 下载后解压pdfjs-1.10.88-dist.zip文件后得到: 2.把pdfjs-1.10.88-dist放到 ...
- 解决uniapp开发微信小程序预览pdf文件ios\安卓兼容问题
问题 项目需要用uniapp来开发微信小程序,其中,有一个功能是预览pdf, 后台以链接形式返回pdf地址,一开始使用web-view做链接跳转,但是出现ios文件可以正常打开,android打不开的 ...
- php ziparc 扩展_请问扩展名为.php.cfg.pdf.rar的文件分别是什么文件用什么软件能够打开...
请问扩展名为.php.cfg.pdf.rar的文件分别是什么文件用什么软件能够打开 补充说明:请问,扩展名为.php.cfg.pdf.rar的文件分别是什么文件?用什么软件能够打开? 更新时间:201 ...
- java打开pdf文件_[原创]java在线打开PDF文档
步骤一:(涉及到的工具) 访问:http://www.zhuozhengsoft.com/dowm/,从官网下载PageOffice for Java. 步骤二:(配置工程) 1. 解压PageOff ...
最新文章
- Javascript类型转换的规则
- CentOS6下yum下载的包存放路径
- [开源] .Net orm FreeSql 1.5.0 最新版本(番号:好久不见)
- VS Code HtmlFindClass 插件介绍
- 安卓案例:利用相对布局实现注册页面
- js设置html不可复制,用JS实现用户禁止WEB复制
- Python对象引用和del删除引用
- 洛谷 1115——最大子段和(线性数据结构)
- 计算机代数与密码学,代数曲线与密码学
- 如何在VScode中配置python第三方库
- Markdown语法介绍(详细)
- java微信分享朋友圈_Java实现微信公众平台朋友圈分享功能详细代码
- 2022年电子造粒计数器市场前景分析及研究报告
- 运维派 企业面试题3 为上题中的 十个随机字母_test.html 文件 更名
- nokia 6300手机QQ4.0下载,设置空间支持jar下载
- github使用教程linux,GitHub Linux下使用方法
- 网络——VRRP、浮动路由(备份路由)
- 什么软件去视频水印 拍抖音技巧视频教程
- 计算机系vi论文,高校VI形象体系的功能特点-vi设计论文-计算机论文.docx
- 数据科学包_Fourth_Chapter