当前位置:首页 > 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 封装组件,简化了集成流程。

安装依赖:

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 文件,适合简单场景。

示例代码:

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

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

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

示例代码:

前端vue实现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实现弹窗可切换

实现弹窗可切换的 Vue 方案 动态组件切换 通过 Vue 的 <component :is="currentComponent"> 动态加载不同弹窗组件,结合 v-if 控制显示状态。…

vue实现a4打印模板

vue实现a4打印模板

使用Vue实现A4打印模板 在Vue中实现A4打印模板需要结合CSS的打印样式和Vue的模板渲染能力。以下是具体实现方法: 设置A4纸张尺寸 在CSS中定义A4纸张的标准尺寸(210mm × 297…

vue实现cs

vue实现cs

Vue 实现 CS(Client-Side)渲染的常见方法 Vue.js 是一个用于构建用户界面的渐进式框架,默认采用客户端渲染(CSR)。以下是几种常见的实现方式: 使用 Vue CLI 创建项目…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue 实现视频

vue 实现视频

Vue 实现视频播放功能 使用 Vue 实现视频播放功能可以通过 HTML5 的 <video> 标签或第三方库(如 video.js)来实现。以下是两种常见的方法: 使用 HTML5…

javascript实现vue

javascript实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,主要包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化的实现示例。 数据响应式系统 通过 Object.de…