vue-pdf - APP中预览pdf

vue-pdf

<template>
  <div id="displayPdf">
    <pdf
      ref="wrapper"
      :page="pageNum"
      :src="url"
      @progress="loadedRatio = $event"  
      @num-pages="pageTotalNum = $event"
    ></pdf>

    <div class="bottom">
      <div class="page">{{ pageNum }} / {{ pageTotalNum }}</div>
      <div class="button">
        <div @click="prePage">上一页</div>
        <div @click="nextPage">下一页</div>
      </div>
    </div>
  </div>
</template>

<script>
import pdf from "vue-pdf";

export default {
  name: "",
  components: {
    pdf
  },
  data() {
    return {
      url: "",
      pageNum: 1,
      scale: 100,
      pageTotalNum: 1, // 总页数
      loadedRatio: 0 // 当前页面的加载进度,范围是0-1 ,等于1的时候代表当前页已经完全加载完成了
    };
  },
  created() {
    this.url = this.$route.meta.url;
  },
  methods: {
    // 上一页
    prePage() {
      let page = this.pageNum;
      page = page > 1 ? page - 1 : this.pageTotalNum;
      this.pageNum = page;
    },

    // 下一页
    nextPage() {
      let page = this.pageNum;
      page = page < this.pageTotalNum ? page + 1 : 1;
      this.pageNum = page;
    },

    //放大
    scaleD() {
      this.scale += 100;
      this.$refs.wrapper.$el.style.width = parseInt(this.scale) + "%";
    }
  }
};
</script>

vue-pdf-signature (出现乱码时,网上发现了这种写法)

<template>
  <div id="displayPdf">
    <pdf
       ref="wrapper"
      :page="pageNum"
      :src="url"
      @progress="loadedRatio = $event"
      @num-pages="pageTotalNum = $event"
    ></pdf>
    ......

  </div>
</template>

<script>
import pdf from "vue-pdf-signature";
import CMapReaderFactory from "vue-pdf-signature/src/CMapReaderFactory";

export default {
  name: "",
  components: {
    pdf
  },
  data() {
    return {
      url: "",
      pageNum: 1,
      scale: 100,
      pageTotalNum: 1, // 总页数
      loadedRatio: 0 // 当前页面的加载进度,范围是0-1 ,等于1的时候代表当前页已经完全加载完成了
    };
  },
  created() {
    this.url = pdf.createLoadingTask({
      //接口中的url地址用createLoadingTask方法
      url: this.$route.meta.url,
      cMapPacked: true,
      CMapReaderFactory
    });
  },

  ......
};
</script>

### 使用 `vue-pdf-app` 实现 PDF 文件预览 为了使用 `vue-pdf-app` 插件来实现在前端页面上显示 PDF 文档的功能,可以按照以下方法操作: #### 安装依赖包 首先,在项目根目录下通过命令行工具安装必要的 npm 包: ```bash npm install vue3-pdf-app ``` #### 引入并注册组件 接着,在项目的入口文件或者具体使用的页面中引入该插件及其样式表,并将其作为全局或局部组件进行注册。 对于 **Vue 3** 的单文件组件来说,可以在 `<script>` 标签内部完成这些工作[^3]: ```javascript import { defineComponent } from &#39;vue&#39;; import VuePdfApp from "vue3-pdf-app"; import "vue3-pdf-app/dist/icons/main.css"; export default defineComponent({ components: { VuePdfApp, }, }); ``` #### 编写模板结构 随后,在对应的 `.vue` 文件中的 `<template>` 部分定义好 HTML 结构,以便能够正确渲染出带有 PDF 查看器的界面。这里给出一个简单的例子说明如何设置基本属性以及传递给子组件的数据源链接地址: ```html <template> <div class="pdf-container"> <!-- 这里传入 pdf 文件路径 --> <vue-pdf-app :page="currentPage" :src="pdfSrc"></vue-pdf-app> <!-- 添加翻页按钮等交互元素 --> <button @click="prevPage">Previous</button> <span>{{ currentPage }}</span> / {{ totalPages }} <button @click="nextPage">Next</button> </div> </template> ``` #### 处理逻辑控制 最后一步是在 `<script setup>` 或者选项 API 中编写相应的 JavaScript 方法用于处理用户的输入事件(比如点击上下一页),同时也可能涉及到获取总页数等相关信息: ```javascript <script setup> // 假设已经完成了上述提到过的导入语句... const pdfSrc = &#39;/path/to/your/document.pdf&#39;; // 设置要加载的 PDF 文件 URL 地址 let currentPage = ref(1); // 当前正在查看的是第几页,默认为首页 let totalPages = computed(() => // 计算得到文档总共包含多少页 Math.ceil(VuePdfApp.getPageNum() || 0) ); function nextPage(){ if (currentPage.value >= totalPages){ return; } currentPage.value += 1; } function prevPage(){ if(currentPage.value <= 1){ return; } currentPage.value -= 1; } </script> ``` 以上就是利用 `vue-pdf-app` 库创建一个简易版 PDF 浏览器的主要步骤概述。当然实际开发过程中还可以根据需求进一步扩展功能特性,如添加缩放比例调整、书签导航栏等功能模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值