当前位置:   article > 正文

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

vue-pdf 安装报错

 

目录

一、安装npm 依赖

二、引入组件

1、html中使用组件

单页

多页 

2、数据处理

单页

多页 

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

四、报错解决


前言

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

 

一、安装npm 依赖

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

  1. npm i pdfjs-dist@2.5.207 --save
  2. npm i vue-pdf@4.2.0 --save

2、修改pacakge.json文件 

  1. "dependencies": {
  2. "pdfjs-dist": "2.5.207",
  3. "vue-pdf": "4.2.0",
  4. },

二、引入组件

  1. import pdf from 'vue-pdf'
  2. export default {
  3. name: 'App',
  4. components: {
  5. pdf
  6. },
  7. ···
  8. }

1、html中使用组件

单页

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

多页 

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

2、数据处理

单页

  1. export default {
  2. ···
  3. data () {
  4. return {
  5. file: "/pdf/test.pdf"
  6. }
  7. }
  8. }

多页 

  1. export default {
  2. ···
  3. data () {
  4. return {
  5. file: "/pdf/test.pdf",
  6. pageNum: 1
  7. }
  8. },
  9. methods: {
  10. getPageNum () {
  11. let loadingTask = pdf.createLoadingTask(this.file)
  12. loadingTask.promise.then(pdf => {
  13. this.pageNum = pdf.numPages
  14. }).catch(err => {
  15. console.error('pdf加载失败', err);
  16. })
  17. }
  18. },
  19. mounted () {
  20. this.getPageNum()
  21. }
  22. }

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

  1. <template>
  2. <div class="pdf_wrap">
  3. <pdf class="pdfView" v-for="item in pageNum" :key="item" :src="pdfUrl" :page="item"></pdf>
  4. <div class="btnCont">
  5. <div class="savebtn"
  6. @click="sign">确认</div>
  7. </div>
  8. </div>
  9. </template>
  10. <script>
  11. import pdf from 'vue-pdf'
  12. import { protocolGet } from "../../../api/validation/shareagreement";//调用的接口
  13. export default {
  14. components: {
  15. pdf
  16. },
  17. props: {},
  18. data() {
  19. return {
  20. title: this.$route.meta?.title || '',
  21. pdfUrl:'',
  22. pageNum: 1
  23. }
  24. },
  25. watch: {},
  26. computed: {},
  27. methods: {
  28. getprotocolGet(){
  29. protocolGet().then((res)=>{
  30. if(res.code==200){
  31. this.pdfUrl= res.data.contractUrl//获取到的协议展示
  32. this.getPageNum();//pdf分页处理
  33. }
  34. })
  35. },
  36. getPageNum () {
  37. let loadingTask = pdf.createLoadingTask(this.pdfUrl,{withCredentials: false})
  38. loadingTask.promise.then(pdf => {
  39. this.pageNum = pdf.numPages
  40. }).catch(err => {
  41. console.error('pdf加载失败', err);
  42. })
  43. },
  44. sign() {
  45. this.$router.push({
  46. path: '/xxx',
  47. })
  48. },
  49. },
  50. created() {
  51. this.getprotocolGet()
  52. },
  53. mounted() {
  54. },
  55. }
  56. </script>
  57. <style>
  58. .pdf_wrap{
  59. height: 100%;
  60. padding-bottom: 1.4rem;
  61. background-color: #fff;
  62. }
  63. </style>
  64. <style scoped>
  65. .pdf_wrap .btnCont {
  66. position: fixed;
  67. bottom: 0rem;
  68. left: 0;
  69. background-color: #fff;
  70. padding: 0.1rem 0 .40rem 0;
  71. width: 100%;
  72. border: 0;
  73. text-align: center;
  74. }
  75. .pdf_wrap .btnCont .savebtn{
  76. color: #fff;
  77. display: inline-block;
  78. height: 0.8rem;
  79. line-height: 0.8rem;
  80. border-radius: 0.4rem;
  81. width: 6.9rem;
  82. margin: auto;
  83. font-size: 0.28rem;
  84. background-color: #ff0b95;
  85. }
  86. </style>

四、报错解决

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

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

 

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

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/172538
推荐阅读
相关标签
  

闽ICP备14008679号