React Native下载打开pdf文件
时间:2022-06-05
本文章向大家介绍React Native下载打开pdf文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文原创首发于公众号:ReactNative开发圈,转载需注明出处。
使用到的组件
- react-native-fs 文件下载组件 GitHub - johanneslumpe/react-native-fs: Native filesystem access for react-native
- react-native-pdf-view pdf显示组件 GitHub - cnjon/react-native-pdf-view: React Native PDF View
组件安装
cd到你的项目目录下,执行下面的命令安装
npm install react-native-fs --save
react-native link react-native-fs
npm i react-native-pdf-view --save
react-native link react-native-pdf-view
示例代码
首先下载pdf文件到本地,react-native-pdf-view组件现在只能支持显示手机本地pdf。
var DownloadFileOptions = {
fromUrl: pdfDownloadURL, // URL to download file from
toFile: this.pdfPath // Local filesystem path to save the file to
}
var result = RNFS.downloadFile(DownloadFileOptions);
console.log(result);
var _this = this;
result.then(function (val) {
_this.setState({
isPdfDownload: true,
});
}, function (val) {
console.log('Error Result:' + JSON.stringify(val));
}
).catch(function (error) {
console.log(error.message);
});
显示pdf,因为可能有多页,所以在打开第一页后,利用onLoadComplete事件获取到一共有多少页,然后动态加载后面的几页
render() {
if (!this.state.isPdfDownload) {
return (
<View style={styles.container}>
<Text>Downloading</Text>
</View>
);
}
var pages = [];
for (var i = 2; i < this.state.pageCount + 1; i++) {
pages.push(
<PDFView ref={(pdf) => { this.pdfView = pdf; } }
key={"sop" + i}
path={this.pdfPath}
pageNumber={i}
style={styles.pdf} />
);
}
return (
<ScrollView style={styles.pdfcontainer}>
<PDFView ref={(pdf) => { this.pdfView = pdf; } }
key="sop"
path={this.pdfPath}
pageNumber={1}
onLoadComplete={(pageCount) => {
this.setState({ pageCount: pageCount });
console.log(`pdf共有: ${pageCount}页`);
} }
style={styles.pdf} />
{pages.map((elem, index) => {
return elem;
})}
</ScrollView>
)
}
完整代码: GitHub地址:https://github.com/forrest23/reacttest
- iOS学习—— UINavigationController的返回按钮与侧滑返回手势的研究
- iOS学习——iOS常用的存储方式
- iOS学习——内存泄漏检查及原因分析
- IOS学习——iphone X的适配
- 使用PowerShell自动部署ASP.NetCore程序到IIS
- ios学习——键盘的收起
- IOS学习7——cocoapod安装与使用教程
- 使用Docker环境快速搭建靶机环境
- Java标准I/O流编程一览笔录
- 十分钟学perl够用(客服MM都懂了)
- Java多线程并发编程一览笔录
- Tomcat6/7应用服务器-禁用RC4等弱密码套件
- mybaits3整合spring总结
- 如何使用Airgeddon找回WiFi密码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- leetcode - 旋转数组的最小数字
- 笔记101 | 文件的压缩与解压笔记
- 诸葛亮vs司马懿,排序算法大战谁能笑到最后?
- Centos密钥登陆,解决云服务器被尝试登陆问题
- Fair Scheduler到Capacity Scheduler 转换工具
- 这可能是把SpringBoot配置文件讲解的最详细的文章了
- 抛出这8个问题,检验一下你到底会不会ThreadLocal,来摸个底~
- 最近合肥降雨不断,给自己做一个天气情况微信定时推送吧
- 【适合收藏】为了多点时间陪女朋友,我向BAT大佬跪求了这15条JS技巧
- iOS文本尺寸自适应异步计算实现
- CentOS7下系统分析与排障利器sysdig简单介绍
- Faker 一个生成虚拟数据的Python模块
- ICLR 2020 Mogrifier LSTM 解析
- 优秀的程序员是如何利用工具来提升工作效率的?
- webpack实战——一切皆模块