uniapp + vue2 + pfdjs + web-view 实现安卓、iOS App PDF预览

文章目录

概要

在使用uniapp开发安卓、iOS APP的时候遇到一个需求,预览PDF,特此记录

  1. 下载pdfjs 解压到static文件夹中 pdfjs
  2. githup地址

技术栈

uniapp + vue2 + pfdjs + webview

完整代码

javascript 复制代码
<template>
  <view class="pdf-module" style="width: 100%; height: 100vh">
    <web-view :src="allUrl" :webview-styles="webviewStyles"></web-view>
  </view>
</template>
<script>
export default {
  data() {
    return {
      allUrl: '',
      viewerUrl: '/static/pdf/web/viewer.html',
      webviewStyles: {
        progress: { color: '#007aff' }
      }
    }
  },
  onLoad(option) {
    const encodedPdfUrl = encodeURIComponent(option.url)
    const baseUrl = this.getBaseUrl()
    this.allUrl = `${baseUrl}${this.viewerUrl}?file=${encodedPdfUrl}`
  },
  methods: {
    getBaseUrl() {
      const platform = uni.getSystemInfoSync().platform
      return platform === 'ios' ? '/' : ''
    }
  }
}
</script>
<style scoped>
.pdf-module {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
</style>

效果图

小结

javascript 复制代码
注释 / 删除 同源校验逻辑
// 原错误代码(大概1802行)
if (fileOrigin !== viewerOrigin) {
  throw new Error('file origin does not match viewer\'s');
}

// 修改后(注释掉校验)
// if (fileOrigin !== viewerOrigin) {
//   throw new Error('file origin does not match viewer\'s');
// }
相关推荐
光影少年2 小时前
react和vue中的优点和缺点都有哪些
前端·vue.js·react.js
EndingCoder2 小时前
Node.js 与 TypeScript:服务器端开发
前端·javascript·typescript·node.js
打小就很皮...2 小时前
基于 React 实现 Vditor 的可复用 Markdown 渲染组件
前端·react.js·markdown·vditor
一起养小猫2 小时前
Flutter for OpenHarmony 实战:Container与Padding布局完全指南
android·flutter·harmonyos
EndingCoder2 小时前
React 与 TypeScript:组件类型化
前端·javascript·react.js·typescript·前端框架
沛沛老爹2 小时前
Web开发者实战:多模态Agent技能开发——语音交互与合成技能集成指南
java·开发语言·前端·人工智能·交互·skills
HeDongDong-2 小时前
详解Kotlin的各种类(使用场景导向)
android·开发语言·kotlin
皮卡穆2 小时前
Vue3 + Swiper.js 实现无缝轮播图组件
前端·javascript·vue
民乐团扒谱机2 小时前
【数模美赛=美术大赛?】O奖论文图片复刻——高级绘图matlab代码集锦,让你摆脱画图“一眼MATLAB”的痛苦!
前端·人工智能·matlab