vue-pdf实现pdf在线预览并实现自定义预览框高度

 更新时间:2024年03月21日 11:41:13   作者:zhimingwen  
这篇文章主要介绍了vue-pdf实现pdf在线预览并实现自定义预览框高度方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

首先

安装vue-pdf

npm install --save vue-pdf

在你的vue页面文件中引入这个组件

然后运行程序,这时候你会发现,pdf预览图并不能铺满你的容器框。

查看样式:

发现vue-pdf组件的canvas标签里面把高度写死成 height:212.269px了。

我们尝试给这个组件再写一个pdf-preview的class 将设置高度为100%发现不生效。

  .pdf-preview {
    height: 100%;
  }

解决方案

提高指定样式的应用优先权(优先级)

  .pdf-preview {
    height: 100%;
  }
  // 穿透vue-pdf插件中的canvas样式
  .pdf-preview canvas {
    //提高指定样式规则的应用优先权(优先级)
    height: 100% !important;
  }

附上完整代码

<!--
 * @Author: WenZhiming
 * @Date: 2022-09-26 17:17:55
 * @LastEditors: WenZhiming
 * @LastEditTime: 2022-09-26 18:03:13
 * @Description: file content
-->
<template>
  <div class="container_upload relative">
    <pdf
      v-if="pdfUrl && pdfUrl.endsWith('.pdf')"
      class="pdf-preview"
      :src="pdfUrl"
    ></pdf>
    <div class="buttons">
      <el-button v-if="pdfUrl" type="primary" plain @click="previewPDF">
        {{ $t('查看') }}
      </el-button>
      <el-button type="primary" class="mt-12" @click="uploadPdf">
        {{ $t('上傳') }}
      </el-button>
    </div>
    <input
      ref="pdfInput"
      type="file"
      style="display: none"
      accept="application/pdf"
      @change="fileChange"
    />
  </div>
</template>
<script>
  import pdf from 'vue-pdf'
  export default {
    components: {
      pdf,
    },
    data() {
      return {
        pdfUrl: '',
      }
    },
    methods: {
      uploadPdf() {
        this.$refs.pdfInput.click()
      },
      fileChange(ev) {
        //文件上传到阿里云oss获得url
        // this._upload(ev, (url) => {
        //   this.pdfUrl = url
        // })
        this.pdfUrl = 'https://www.pinduoduo.com/pdd_privacy_policy.pdf'
      },
      previewPDF() {
        window.open(this.pdfUrl, '_blank')
      },
    },
  }
</script>
<style lang="scss">
  .container_upload {
    width: 150px;
    height: 256px;
    border: 1px solid #ddd;
    border-radius: 4px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    .buttons {
      z-index: 1;
      position: absolute;
      display: flex;
      flex-direction: column;
      .el-button {
        margin-left: 0;
        width: 80px;
      }
    }
    img {
      width: 100%;
      height: 100%;
    }
  }

  .pdf-preview {
    height: 100%;
  }
  // 穿透vue-pdf插件中的canvas样式
  .pdf-preview canvas {
    //提高指定样式规则的应用优先权(优先级)
    height: 100% !important;
  }
</style>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)

    一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)

    这篇文章主要介绍了前后端分离及Vue.js入门,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • vue原理Compile之optimize标记静态节点源码示例

    vue原理Compile之optimize标记静态节点源码示例

    这篇文章主要为大家介绍了vue原理Compile之optimize标记静态节点源码示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 在nginx上部署vue项目(history模式)的方法

    在nginx上部署vue项目(history模式)的方法

    vue-router 默认是hash模式,使用url的hash来模拟一个完整的url,当url改变的时候,页面不会重新加载。这篇文章主要介绍了在nginx上部署vue项目(history模式),需要的朋友可以参考下
    2017-12-12
  • VUE前端如何处理后端接口返回的图片详解

    VUE前端如何处理后端接口返回的图片详解

    在现代Web开发中,前端应用经常需要从后端接口获取图片数据,下面这篇文章主要介绍了VUE前端如何处理后端接口返回的图片的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • axios如何取消重复无用的请求详解

    axios如何取消重复无用的请求详解

    这篇文章主要给大家介绍了关于axios如何取消重复无用的请求的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用axios具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • vue利用openlayers实现动态轨迹

    vue利用openlayers实现动态轨迹

    这篇文章主要为大家介绍了vue利用openlayers实现动态轨迹,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Vue3+Ts实现缓存功能的示例代码

    Vue3+Ts实现缓存功能的示例代码

    这篇文章主要为大家详细介绍了Vue3+Ts如何实现缓存,用户搜索词本地排名,延迟消费或者消息队列,用户签到和锁,以及接口限流,还有全局ID等功能,需要的可以参考下
    2024-03-03
  • VuePress在build打包时window document is not defined问题解决

    VuePress在build打包时window document is not defined问题解决

    这篇文章主要为大家介绍了VuePress在build打包时window document is not defined问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • vue项目兼容IE浏览器的教程步骤

    vue项目兼容IE浏览器的教程步骤

    Vue的小伙伴们,困扰大家的IE浏览器支持Vue的问题,目前已经找到了一个比较好的解决方案,下面这篇文章主要给大家介绍了关于vue项目兼容IE浏览器的教程步骤,需要的朋友可以参考下
    2023-03-03
  • vue-cli3+typescript初体验小结

    vue-cli3+typescript初体验小结

    这篇文章主要介绍了vue-cli3+typescript初体验小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02

最新评论