最近用react-native做一个学生学习的app,项目当中需要展示pdf,我是用webview加载一个本地html,然后用pdf.js来渲染pdf的。至于,为什么不用react-native-pdf ,这里不讨论。
用到的静态资源有 jquery.js、pdf.js、pdf.worker.js,都需要在html中用<script src=’…’></scirpt> 标签引用。
以前项目中的做法是
android把资源放在 /android/app/src/main/assets 目录下,ios把资源放到组件的同级目录下即可,然后在项目中引用
const source = Platform.OS === 'ios' ? require('./index.html) : {'uri':'file:///android_asset/pdfView/index.html'}
// pdfView是我存放静态资源的文件夹
// 该文件夹放在/android/app/src/main/assets 目录下
<WebView source={source}/>
这样写没有任何问题,ios和android都能够加载资源,但这次使用的是react-native@0.60.4,react-native-webview@7.4.2,在android下没有任何问题,但在ios下问题就来了。ios下,三个js静态资源无法加载html里面,导致无法执行PDFJS方法,pdf也就不能展示出来。
这种情况我门可以像android一样把静态资源放在ios目录下,然后用baseUrl设置静态资源访问路径就能访问到了,具体做法如下
const html = `<html>
<head>
<meta charset="UTF-8">
<script src="jq.js" type="text/javascript"></script>
<script src="pdf.js" type="text/javascript"></script>
</head>
<body>
<div>test</div>
</body>
</html>`
const source = Platform.OS === 'ios' ? {html, baseUrl: 'pdfweb/'} : {'uri':'file:///android_asset/pdfView/index.html'}
<WebView source={source}/>
将资源文件放到pdfView目录下,用xcode将目录导入到项目中,如下
然后重启项目就ok啦
欢迎各位看官留言讨论,我看到会及时回复!
各位看官,如您觉得这篇博文对您有点用处,打赏几个铜板吧,俺会再接再厉继续努力,若您觉得这篇文章写的太菜,请轻喷,程序猿混口饭吃不容易!!!
支付宝 | 微信 |
---|---|
![]() | ![]() |