vue预览PDF文件的方法

1.使用iframe标签预览PDF文件

1.1页面结构 html

 <iframe
          :src="fileUrl"
          id="iframeBox"
          ref="iframeRef"
          frameborder="0"
          style="width: 100%; height: 800px"
        ></iframe>

1.2 js代码

export default {
  data() {
    return {
      fileUrl: "test.pdf", //文件路径
    };
  }
};

2.使用vue-pdf插件预览PDF文件

2.1 安装依赖

npm install vue-pdf@4.2.0 
建议安装指定版本依赖会解决控制台报错

2.2 注册并引入组件

import pdf from "vue-pdf";
components: {
    pdf,
  },

2.3 使用组件展示PDF文件

 //html
      <div
        class="pdf-box"
      >
        <div class="pdf-tab">
          <div class="pdf-tab-button">
            <div class="btn-def btn-pre" @click.stop="prePage">上一页</div>
            <div class="btn-def btn-next" @click.stop="nextPage">下一页</div>
            <div class="btn-def" @click.stop="clock">顺时针</div>
            <div class="btn-def" @click.stop="counterClock">逆时针</div>
          </div>
          <div class="page-size">{{ pageNum }}/{{ pageTotalNum }}</div>
          <pdf
            ref="pdf"
            class="pdf-preview"
            :src="fileUrl"
            :page="pageNum"
            :rotate="pageRotate"
            :style="{ height: customHeight + 'px' }"
            @num-pages="pageTotalNum = $event"
            @link-clicked="page = $event"
          ></pdf>
        </div>
        
 //js
  export default {
  data() {
    return {
      fileUrl: "", //文件路径
      pageNum: 1,
      pageTotalNum: 1,
      pageRotate: 0,
      customHeight: 400, // 自定义的PDF预览框高度
    };
  },
  components: {
    pdf,
  },
  methods: {
    //上一页
    prePage() {
      var p = this.pageNum;
      p = p > 1 ? p - 1 : this.pageTotalNum;
      this.pageNum = p;
    },
    // 下一页
    nextPage() {
      var p = this.pageNum;
      p = p < this.pageTotalNum ? p + 1 : 1;
      this.pageNum = p;
    },
    //顺时针
    clock() {
      this.pageRotate += 90;
    },
    //逆时针
    counterClock() {
      this.pageRotate -= 90;
    }  
  },
};
//css
.pdf-box {
  width: 100%;
  height: 800px;
  .pdf-tab {
    width: 100%;
    height: 800px;
    display: flex;
    flex-direction: column;
    align-items: center;
    .pdf-tab-button {
      width: 100%;
      display: flex;
      align-items: center;
      justify-content: space-around;
      .btn-def {
        width: 98px;
        height: 40px;
        line-height: 40px;
        text-align: center;
        color: #fff;
        background-color: #409eff;
        border-color: #409eff;
        border-radius: 5px;
        font-size: 18px;
      }
    }

    .page-size {
      width: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 18px;
    }
  }
}

相关推荐

  1. vuePDF文件方法

    2024-05-14 11:00:04       9 阅读
  2. vue,uniapppdf文件在线

    2024-05-14 11:00:04       37 阅读
  3. vue 文件(docx、.xlsx、pdf)

    2024-05-14 11:00:04       17 阅读
  4. pdf.js 加密pdf文件

    2024-05-14 11:00:04       12 阅读
  5. vue pdf pdf.js 具体使用

    2024-05-14 11:00:04       10 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-14 11:00:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-14 11:00:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-14 11:00:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-14 11:00:04       18 阅读

热门阅读

  1. Flink Stream API实践

    2024-05-14 11:00:04       11 阅读
  2. 13.复习1笔记

    2024-05-14 11:00:04       8 阅读
  3. Gitee使用教程

    2024-05-14 11:00:04       8 阅读
  4. VsionPro

    2024-05-14 11:00:04       7 阅读
  5. C语言从头学05——头文件及库文件

    2024-05-14 11:00:04       9 阅读
  6. linux程序分析命令(三)

    2024-05-14 11:00:04       8 阅读
  7. 【设计模式】23种设计模式概览及应用示例

    2024-05-14 11:00:04       7 阅读
  8. 21.JVM的垃圾回收算法

    2024-05-14 11:00:04       9 阅读
  9. elementui中close-on-click-modal=“fasle“不生效

    2024-05-14 11:00:04       11 阅读
  10. CentOS 初始化配置事项

    2024-05-14 11:00:04       10 阅读
  11. SpringBoot学习记录(3)

    2024-05-14 11:00:04       13 阅读
  12. 牛客Linux高并发服务器开发学习第六天

    2024-05-14 11:00:04       12 阅读
  13. linux 个人用户设置默认shell为tcsh

    2024-05-14 11:00:04       9 阅读
  14. 【Pytest官方文档翻译及学习】2.1 如何调用pytest

    2024-05-14 11:00:04       11 阅读