当前位置:首页 > VUE

前端vue实现pdf预览

2026-01-20 12:25:25VUE

前端 Vue 实现 PDF 预览的方法

使用 PDF.js 库

PDF.js 是 Mozilla 提供的开源库,可直接在浏览器中渲染 PDF 文件。安装依赖后,通过 pdfjs-dist 实现核心功能。

安装依赖:

npm install pdfjs-dist

示例代码:

<template>
  <div>
    <canvas ref="pdfCanvas"></canvas>
  </div>
</template>

<script>
import * as pdfjsLib from 'pdfjs-dist';

export default {
  data() {
    return {
      pdfDoc: null,
      pageNum: 1,
      pageRendering: false
    };
  },
  methods: {
    async loadPDF(url) {
      const loadingTask = pdfjsLib.getDocument(url);
      this.pdfDoc = await loadingTask.promise;
      this.renderPage(this.pageNum);
    },
    async renderPage(num) {
      const page = await this.pdfDoc.getPage(num);
      const viewport = page.getViewport({ scale: 1.0 });
      const canvas = this.$refs.pdfCanvas;
      const context = canvas.getContext('2d');
      canvas.height = viewport.height;
      canvas.width = viewport.width;

      const renderContext = {
        canvasContext: context,
        viewport: viewport
      };
      await page.render(renderContext).promise;
    }
  },
  mounted() {
    this.loadPDF('your-file.pdf');
  }
};
</script>

使用 vue-pdf 组件

vue-pdf 是基于 PDF.js 的 Vue 封装组件,简化了集成流程。

前端vue实现pdf预览

安装依赖:

npm install vue-pdf

示例代码:

<template>
  <pdf :src="pdfSrc" @num-pages="pageCount = $event" @page-loaded="currentPage = $event"></pdf>
</template>

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

export default {
  components: { pdf },
  data() {
    return {
      pdfSrc: 'your-file.pdf',
      pageCount: 0,
      currentPage: 0
    };
  }
};
</script>

使用 iframe 嵌入

直接通过 <iframe> 标签嵌入 PDF 文件,适合简单场景。

前端vue实现pdf预览

示例代码:

<template>
  <iframe 
    src="your-file.pdf" 
    width="100%" 
    height="600px"
    style="border: none;"
  ></iframe>
</template>

使用第三方服务(如 Google Docs Viewer)

通过在线服务实现预览,无需本地处理 PDF 文件。

示例代码:

<template>
  <iframe 
    :src="`https://docs.google.com/viewer?url=${encodeURIComponent(pdfUrl)}&embedded=true`"
    width="100%"
    height="600px"
  ></iframe>
</template>

<script>
export default {
  data() {
    return {
      pdfUrl: 'your-file.pdf'
    };
  }
};
</script>

注意事项

  • PDF.js 需处理跨域问题,若文件在远程服务器需配置 CORS。
  • 大文件加载时建议分页渲染,避免性能问题。
  • 移动端需测试兼容性,部分浏览器可能限制 iframe 使用。

以上方法可根据项目需求选择,复杂场景推荐 PDF.js 或 vue-pdf,轻量需求可使用 iframe 或在线服务。

标签: vuepdf
分享给朋友:

相关文章

vue实现生成二维码

vue实现生成二维码

使用qrcode.vue库生成二维码 安装qrcode.vue库: npm install qrcode.vue --save 在Vue组件中使用: <template> &l…

vue实现星星

vue实现星星

实现星星评分的Vue组件 使用Vue实现星星评分功能可以通过组件化方式完成,以下是一个完整的实现方案: 模板部分 <template> <div class="star-ra…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式:…

vue 指令实现

vue 指令实现

Vue 指令实现 Vue 指令是 Vue.js 提供的特殊属性,用于在 DOM 元素上添加特殊行为。指令以 v- 前缀开头,例如 v-model、v-if、v-for 等。以下是实现自定义指令和常用内…

vue实现方法

vue实现方法

Vue 实现方法 Vue 是一种流行的前端框架,用于构建用户界面和单页应用。以下是几种常见的 Vue 实现方法: 创建 Vue 实例 通过 new Vue() 创建一个 Vue 实例,传入配置对象…

vue element实现

vue element实现

Vue Element UI 实现 Vue Element UI 是基于 Vue.js 的组件库,提供丰富的 UI 组件,适合快速开发企业级中后台产品。以下是一些关键实现方法和步骤: 安装 Vue…