vue使用pdf.js实现移动端在线PDF文件预览

本文介绍了如何在Vue项目中利用pdf.js解决移动端在线PDF预览的需求,包括背景、选择pdf.js的原因、解决移动端适配和低端浏览器渲染问题的方法,并提供了参考资源。
背景

产品需求涉及到动态的PDF展示,PDF是由后端去生成的,然后下发给前端在线的cdn地址,H5需要实现在线PDF预览的能力

方案

H5展示合同PDF,有很多实现方式。但是通过尝试后发现在不同操作系统会存在兼容性问题

方案 表现
iframe的形式 iOS:只能展示第一页,多页不能展示
Android: 弹出下载弹窗
PC:正常展示
embed标签 iOS:只能展示第一页
Android: 弹出下载弹窗
PC:显示不出来
vue-pdf(基于pdfjs封装 各端都能正常展示,且可以根据需要展示PDF的全部页数,设定翻页操作,但是部署到生产环境时存在bug,且该库已经一年多没有维护了
pdf.js 各端均能正常展示

最终选择了使用pdf.js,日常开发中如果原生标签能满足的还是尽量用简单的方案处理,但是此次需求涉及到较为复杂的PDF操作,所以对比之下还是使用了插件的形式

解决方案
 <canvas
          v-for="page in pdfPages"
          :key="page"
          :id="'pdf-canvas' + page"
        />
<script>
  //以es5形式引入,解决低端浏览器兼容性问题
  const PDFJS = require("pdfjs-dist/es5/build/pdf");
  //pdfjs-dist的版本也是2.5.207
  PDFJS.GlobalWorkerOptions.workerSrc = "https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.5.207/pdf.worker.js";

  export default {
   
   
    name: "Contract",
    data: function () {
   
   
      return {
   
   
        pdfPages: [], //页数
        pdfWidth: "", // 宽度
        pdfSrc: '', //地址
        pdfDoc: "", //文档内容
        
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值