vue中如何使用vue-pdf及相应报错解决

news2025/2/24 3:59:58

 

目录

一、安装npm 依赖

二、引入组件

1、html中使用组件

单页

多页 

2、数据处理

单页

多页 

三、项目使用--代码部分

四、报错解决


前言

  • 使用vue-pdf组件实现文件预览功能 并在文件上增加操作按钮
  • vue3不支持vue-pdf,vue3项目用pdfjs-dist

 

一、安装npm 依赖

1、在根目录下输入一下命令

npm i pdfjs-dist@2.5.207 --save
npm i vue-pdf@4.2.0 --save

2、修改pacakge.json文件 

"dependencies": {
  "pdfjs-dist": "2.5.207",
  "vue-pdf": "4.2.0",
  },

二、引入组件

import pdf from 'vue-pdf'

export default {
  name: 'App',
  components: {
    pdf
  },
  ···
}

1、html中使用组件

单页

<pdf :src="file"></pdf>

多页 

<pdf v-for="i in pageNum" :key="i" :src="file" :page="i"></pdf>

2、数据处理

单页

export default {
  ···
  data () {
    return {
        file: "/pdf/test.pdf"
    }
  }
}

多页 

export default {
  ···
  data () {
    return {
      file: "/pdf/test.pdf",
      pageNum: 1
    }
  },
  methods: {
    getPageNum () {
      let loadingTask = pdf.createLoadingTask(this.file)
      loadingTask.promise.then(pdf => {
        this.pageNum = pdf.numPages
      }).catch(err => {
        console.error('pdf加载失败', err);
      })
    }
  },
  mounted () {
    this.getPageNum()
  }
}

三、项目使用--代码部分

<template>
  <div class="pdf_wrap">
    <pdf class="pdfView" v-for="item in pageNum" :key="item" :src="pdfUrl" :page="item"></pdf>
    <div class="btnCont">
      <div class="savebtn"
           @click="sign">确认</div>
    </div>
    </div>
</template>

<script>
import pdf from 'vue-pdf'
import { protocolGet } from "../../../api/validation/shareagreement";//调用的接口
export default {
  components: {
      pdf
  },
  props: {},
  data() {
    return {
      title: this.$route.meta?.title || '',
      pdfUrl:'',
      pageNum: 1
    }
  },
  watch: {},
  computed: {},
  methods: {
    getprotocolGet(){
      protocolGet().then((res)=>{
        if(res.code==200){
          this.pdfUrl= res.data.contractUrl//获取到的协议展示
          this.getPageNum();//pdf分页处理
        }
      })
    },
     getPageNum () {
      let loadingTask = pdf.createLoadingTask(this.pdfUrl,{withCredentials: false})
      loadingTask.promise.then(pdf => {
        this.pageNum = pdf.numPages
      }).catch(err => {
        console.error('pdf加载失败', err);
      })
    },
    sign() {
      this.$router.push({
        path: '/xxx',
      })
    },
  },
  created() {
   this.getprotocolGet()
  },
  mounted() {
    
  },
}
</script>
<style>
.pdf_wrap{
  height: 100%;
  padding-bottom: 1.4rem;
  background-color: #fff;
}
</style>
<style  scoped>
.pdf_wrap .btnCont {
  position: fixed;
  bottom: 0rem;
  left: 0;
  background-color: #fff;
  padding: 0.1rem 0 .40rem 0;
  width: 100%;
  border: 0;
  text-align: center;
  
}
.pdf_wrap .btnCont .savebtn{
  color: #fff;
  display: inline-block;
  height: 0.8rem;
  line-height: 0.8rem;
  border-radius: 0.4rem;
  width: 6.9rem;
  margin: auto;
  font-size: 0.28rem;
  background-color: #ff0b95;
}
</style>

四、报错解决

1、这种情况就是跨域了找后台解决一下即可

2、 这种情况是pdf还没加载出来就去渲染导致页面pageNum找不到,调用接口加载完成后再去渲染pageNum

 

3、报这个错误加上  {withCredentials: false} ,报错就没有了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/405854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vue】Vue简介、引入、命令式和声明式编程

&#x1f4ad;&#x1f4ad; ✨&#xff1a; 开始陆陆续续更新vue啦   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;&#xff1a;如果有幸和你一起学习一起进步&#xff0c;那就太棒啦&#xff0c;一起学习吧。&#x1f49c;&#x1f49c;   初识vue一、初识…

从零入门开源框架---若依(前后端分离版)

一、若依是什么&#xff1f; 若依它就是一个开源项目&#xff0c;别人写好的代码&#xff0c;我们拿来进行二次开发,它主要是做数据和权限管理系统。 二、使用背景 任何公司的各种大的项目必然需要一个后台权限管理系统&#xff0c;这是必然的&#xff0c;但是如果不想投入太多…

windows安装yarn 详细教程

1、yarn介绍&#xff1a;yarn是一个代码包管理器&#xff0c;它允许我们与来自世界各地的其他开发人员共享代码。想要更多了解可以进入官网查看&#xff1a;https://yarnpkg.com/getting-started 2、进入yarn官网&#xff0c;可以看见官网已经声明从新版本(16.10)开始&#xf…

Vue项目二 登录注册功能的实现

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、系统注册功能的实现1.配置注册页面路由2.注册页面的搭建3.api下发送ajax请求的文件创建二、后台数据服务的创建1.app.js文件的建立2.User.js文件的建立3.配置…

目前最流行的 5 大 Vue 动画库,使用后太炫酷了

⭐️ 本文首发自 前端修罗场(点击加入)&#xff0c;是一个由 资深开发者 独立运行 的专业技术社区&#xff0c;我专注 Web 技术、答疑解惑、面试辅导以及职业发展。现在加入&#xff0c;私聊我即可获取一次免费的模拟面试机会&#xff0c;帮你评估知识点的掌握程度&#xff0c;…

vue3 antd项目实战——table表格的自定义筛选【纯前端filters过滤、自定义筛选table表格数据】

vue3 antd项目实战——table表格自定义筛选&#xff08;使用filters属性实现表头列columns自定义筛选&#xff09;往期知识调用&#xff08;步骤不懂就看这儿&#xff09;场景复现实战演示实例1——筛选发布状态&#x1f525;1、双向绑定表格列目录、表格数据2、编写列目录内容…

vue控制滚动条滑到某个位置

一.关于web开发的各种高度的计算介绍 设置当前滑动到的距离 语法一&#xff1a;window.scrollTop(x,y) 传俩个值 //x横坐标 y纵坐标 例&#xff1a;window.scrollTop(0&#xff0c;1000) 语法二&#xff1a;window.scrollTop(options) 传对象&#xff0c;对象里面放属性 w…

js遍历map(js遍历map对象)

javascript怎么遍历map var map new HashMap();map.put(a,1);map.put(b,2);遍历&#xff1a;var key map.keySet();for (var i in key){ alert(map.get(key[i]));&#xff5d;注&#xff1a;js 中使用map&#xff0c;要先导入一个HashMap.js文件 没要求&#xff0c;引入这个文…

【深入浅出imx8企业级开发实战 | 04】嵌入式Linux设备掉电数据容错研究

这是机器未来的第58篇文章 原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126924015 《深入浅出i.MX8企业级开发实战》快速导航 【01】imx8qxp yocto工程构建指南 【02】Yocto工程repo源码gitee加速配置方法 【03】imx8qxp一键独立编译指南 【04】嵌入式…

三分钟创建一个新应用,ivx的神奇之处【PPT式程序开发】

像做PPT一样的可视化编程语言你想拥有吗&#xff0c;可以自己尝试一下。像PPT一样的编程语言 文章目录&#x1f353;&#x1f353;用ivx创建一个新的应用&#xff08;零基础&#xff09;&#x1f680;&#x1f680;&#x1f96d;&#x1f96d;点击链接&#xff0c;跳转到官网&a…

【Vue 路由(vue—router)二】路由传参(params的类型 、Query参数的类型、路由name)

目录 前言 一、路由传参 效果展示 1.params的类型 &#xff08;后附源码&#xff09; params的类型源码不要在意注释代码 2.​​​​​​query参数的类型&#xff08;后附源码&#xff09; query参数的类型源码同样无视注释代码 3.路由name 前言 此内容为连载&#xff0c…

一文搞懂JS-Web-API——DOM

&#x1f308;本系列文章是博主精心整理的面试热点问题&#xff0c;吸收了大量的技术博客与面试文章&#xff0c;总结多年的面试经历&#xff0c;带你快速建立前端面试知识体系。抓住每一场面试的机会&#xff0c;知己知彼才能百战百胜。直击技术痛点&#xff0c;主动出击&…

Pinia 数据持久化储存(pinia-plugin-persistedstate)

pinia需要使用pinia-plugin-persistedstate插件来进行数据的存储 插件官网地址&#xff1a; https://prazdevs.github.io/pinia-plugin-persistedstate/guide/config.html 1、安装 这里对插件的安装就不多赘述了&#xff0c;放两张官网的截图 使用命令&#xff1a;npm i pi…

Vue--》计算属性与监视(侦听)属性的使用

目录 计算属性(computed) 监视属性(watch) 监视的两种方法 immediate选项 深度监视 计算属性(computed) 计算属性指的是通过一系列运算之后&#xff0c;最终得到一个值。这个动态计算出来的属性值可以被模板结构或methods方法使用&#xff0c;案例如下&#xff1a; <…

前端实战|React18极客园——登陆模块(token持久化、路由拦截、mobx、封装axios)

欢迎来到我的博客 &#x1f4d4;博主是一名大学在读本科生&#xff0c;主要学习方向是前端。 &#x1f36d;目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 &#x1f6e0;目前正在学习的是&#x1f525;React框架React框架React框架&#x1f525…

vite搭建vue2项目

问题提出 最近在做一个练习的小项目&#xff0c;由于要配合组成员的其它成员来搭建项目&#xff0c;大多掌握的技术栈都在vue2&#xff0c;用惯了vite来搭建&#xff08;vite真香~&#xff09;,就想着来搭建一个vue2的项目。原本以为查下百度很快可以搭好&#xff0c;没想到折…

【小程序从0到1】WXSS模版语法汇总

欢迎来到我的博客 &#x1f4d4;博主是一名大学在读本科生&#xff0c;主要学习方向是前端。 &#x1f36d;目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 &#x1f6e0;目前正在学习的是&#x1f525;React/小程序React/小程序React/小程序&am…

微前端vue项目实战 -- 乾坤qiankun框架 (一)

背景&#xff1a; 公司研发的项目主要是 GIS地图为基础的管理系统&#xff0c;由主体项目&#xff08;管理业务模块&#xff09; GIS地图应用&#xff0c;由于 GIS地图应用模块 会在多个地方使用&#xff0c;所以单独构建一个项目&#xff0c;分别在不同的业务场景中引用、交互…

JavaScript鼠标移动事件及案例

一、鼠标点击事件 1.onclick单击事件 鼠标单击时事件处理函数 <input type"button" id"bt" value"点击"> <script> //找到按钮并设置点击事件 document.getElementById("bt").onclick function (){ //被点击…

kkFileView部署及使用

Windows:kkFileView部署及使用前言部署Web引用普通webVue &#xff1a;需要引入base64.js前言 kkFileView支持主流文档的在线预览服务。官网地址 部署 kkFileView不需要集成&#xff0c;只需要部署到服务器即可。 从 Gitee 上下载最新的压缩包&#xff0c;或者从代码仓库中下…