当前位置:首页 > VUE

vue 实现pdf查看

2026-02-18 08:47:01VUE

使用 vue-pdf 库实现 PDF 查看

安装 vue-pdf 库

npm install vue-pdf

引入并使用组件

<template>
  <pdf :src="pdfUrl"></pdf>
</template>

<script>
import pdf from 'vue-pdf'

export default {
  components: { pdf },
  data() {
    return {
      pdfUrl: '/path/to/document.pdf'
    }
  }
}
</script>

使用 PDF.js 实现高级功能

安装 pdfjs-dist

vue 实现pdf查看

npm install pdfjs-dist

实现多页渲染

<template>
  <div v-for="page in numPages" :key="page">
    <pdf :src="pdfUrl" :page="page"></pdf>
  </div>
</template>

<script>
import pdf from 'vue-pdf'

export default {
  components: { pdf },
  data() {
    return {
      pdfUrl: '/path/to/document.pdf',
      numPages: 0
    }
  },
  mounted() {
    const loadingTask = pdf.createLoadingTask(this.pdfUrl)
    loadingTask.promise.then(pdf => {
      this.numPages = pdf.numPages
    })
  }
}
</script>

添加 PDF 查看器控件

实现缩放和导航功能

vue 实现pdf查看

<template>
  <div>
    <button @click="scale += 0.25">放大</button>
    <button @click="scale -= 0.25">缩小</button>
    <button @click="page > 1 ? page-- : null">上一页</button>
    <span>{{ page }} / {{ numPages }}</span>
    <button @click="page < numPages ? page++ : null">下一页</button>

    <pdf 
      :src="pdfUrl" 
      :page="page" 
      :scale="scale"
      @num-pages="numPages = $event"
    ></pdf>
  </div>
</template>

<script>
import pdf from 'vue-pdf'

export default {
  components: { pdf },
  data() {
    return {
      pdfUrl: '/path/to/document.pdf',
      page: 1,
      numPages: 0,
      scale: 1.0
    }
  }
}
</script>

处理 PDF 加载错误

添加错误处理

<template>
  <div>
    <pdf 
      :src="pdfUrl" 
      @error="handleError"
    ></pdf>
    <p v-if="error">{{ error }}</p>
  </div>
</template>

<script>
import pdf from 'vue-pdf'

export default {
  components: { pdf },
  data() {
    return {
      pdfUrl: '/path/to/document.pdf',
      error: null
    }
  },
  methods: {
    handleError(err) {
      this.error = '加载PDF失败: ' + err
    }
  }
}
</script>

实现 PDF 下载功能

添加下载按钮

<template>
  <div>
    <pdf :src="pdfUrl"></pdf>
    <button @click="downloadPdf">下载PDF</button>
  </div>
</template>

<script>
import pdf from 'vue-pdf'

export default {
  components: { pdf },
  data() {
    return {
      pdfUrl: '/path/to/document.pdf'
    }
  },
  methods: {
    downloadPdf() {
      const link = document.createElement('a')
      link.href = this.pdfUrl
      link.download = 'document.pdf'
      link.click()
    }
  }
}
</script>

标签: vuepdf
分享给朋友:

相关文章

vue实现slider

vue实现slider

Vue 实现 Slider 组件 使用 Vue 实现 Slider 组件可以通过原生开发或借助第三方库。以下是两种常见方法: 原生实现 Slider 创建一个基础的 Slider 组件,通过 v-m…

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 Vue 的核心功能包括数据响应式、模板编译和虚拟 DOM。以下是一个简易实现方案,涵盖核心功能模块。 数据响应式系统 通过 Object.defineProperty…

vue实现picker

vue实现picker

Vue 实现 Picker 组件的方法 在 Vue 中实现 Picker 组件可以通过多种方式完成,以下是几种常见的实现方法: 使用原生 HTML 和 CSS 实现 通过 Vue 的模板和样式绑定,…

vue底部实现

vue底部实现

Vue 底部实现方法 在 Vue 项目中实现底部布局可以通过多种方式完成,以下是一些常见的方法: 使用固定定位 将底部元素固定在页面底部,适用于单页应用或需要始终显示的底部栏。 <temp…

vue实现hexo

vue实现hexo

Vue 集成 Hexo 的实现方法 Hexo 是一个静态博客框架,而 Vue 是一个前端框架。将 Vue 集成到 Hexo 中可以通过以下方式实现: 在 Hexo 中使用 Vue 组件 通过 Hex…

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件的…