IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue中预览pdf(vue-pdf) -> 正文阅读

[JavaScript知识库]vue中预览pdf(vue-pdf)

效果图
在这里插入图片描述

安装依赖

yarn add vue-pdf
<template>
  <div>
    <a-card :bordered="false">
      <div class="table-page-search-wrapper">
        <div class="pdf">
          <div class="pdf-tab">
            <div></div>
            <div class="buttonList">
              <a-button class="btn-def btn-pre" @click.stop="prePage">
                上一页
              </a-button>
              <div class="interspace"></div>
              <a-button class="btn-def btn-next" @click.stop="nextPage">
                下一页
              </a-button>
              <div class="interspace"></div>
              <a-button class="btn-def" @click.stop="clock">
                顺时针
              </a-button>
              <div class="interspace"></div>
              <a-button class="btn-def" @click.stop="counterClock">
                逆时针
              </a-button>
              <div class="interspace"></div>
              <a-button class="btn-def" @click.stop="pdfPrintAll">
                全部打印
              </a-button>
              <div class="interspace"></div>
              <a-button class="btn-def" @click.stop="pdfPrint">
                部分打印
              </a-button>
            </div>
            <div class="pageNum">
              <span class="showDetail">{{ pageNum }} / {{ pageTotalNum }}</span>
            </div>
          </div>
          <div class="pdfContent">
            <pdf
              ref="pdf"
              :src="file_url"
              :page="pageNum"
              :rotate="pageRotate"
              @password="password"
              @progress="loadedRatio = $event"
              @page-loaded="pageLoaded($event)"
              @num-pages="pageTotalNum=$event"
              @error="pdfError($event)"
              @link-clicked="page = $event">
            </pdf>
          </div>
        </div>
      </div>
    </a-card>
  </div>
</template>

<script>
import pdf from 'vue-pdf'

export default {
  name: 'Workplace',
  components: {
    pdf
  },
  data () {
    return {
      user: {},
      loading: true,
      file_url: '',
      pdfLoading: false,
      pageNum: 1,
      pageTotalNum: 1,
      pageRotate: 0,
      // 加载进度
      loadedRatio: 0,
      curPageNum: 0
    }
  },
  computed: {
  },
  created () {
  },
  mounted () {
    this.$nextTick(() => {
      if (this.$route.query.file_url) {
        // this.file_url = this.$route.query.file_url
        this.file_url = 'http://127.0.0.1/store/infoOpen/upload/images/report/2022-04-01/859a1c48-e284-429b-9fe3-a74617eaec64.pdf'
        this.pdfLoading = true
      }
    })
  },
  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
    },
    password (updatePassword, reason) {
      updatePassword(prompt('password is "123456"'))
      console.log('...reason...')
      console.log(reason)
      console.log('...reason...')
    },
    pageLoaded (e) {
      this.curPageNum = e
    },
    pdfError (error) {
      console.error(error)
    },
    pdfPrintAll () {
      this.$refs.pdf.print()
    },
    pdfPrint () {
      this.$refs.pdf.print(100, [1, 2])
    }
  }
}
</script>

<style lang="less" scoped>
/deep/.ant-card{
  background-color: #525659;
}
.pdf{
  width: 60%;
  margin-left: 20%;
}
.pdf-tab{
  display: flex;
  justify-content: space-between;
  margin-bottom: 2%;
}
.showDetail{
  color: white;
}
.buttonList{
  display: flex;
  justify-content: space-between;
}
.interspace{
  width: 20px;
}
</style>

``
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:02:06  更:2022-04-04 12:06:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:18:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码