当前位置:首页 > VUE

vue实现pdf预览

2026-03-28 18:02:31VUE

Vue 实现 PDF 预览的方法

使用 pdf.js

pdf.js 是 Mozilla 提供的开源库,可直接在浏览器中渲染 PDF 文件。

安装依赖:

npm install pdfjs-dist

组件实现:

<template>
  <div>
    <canvas v-for="page in pages" :key="page" ref="canvas"></canvas>
  </div>
</template>

<script>
import * as pdfjsLib from 'pdfjs-dist/build/pdf';
import 'pdfjs-dist/build/pdf.worker.entry';

export default {
  data() {
    return {
      pages: [],
    };
  },
  mounted() {
    this.loadPDF('/path/to/file.pdf');
  },
  methods: {
    async loadPDF(url) {
      const loadingTask = pdfjsLib.getDocument(url);
      const pdf = await loadingTask.promise;
      this.pages = Array.from({ length: pdf.numPages }, (_, i) => i + 1);

      this.$nextTick(() => {
        this.pages.forEach(async (pageNum) => {
          const page = await pdf.getPage(pageNum);
          const viewport = page.getViewport({ scale: 1.5 });
          const canvas = this.$refs.canvas[pageNum - 1];
          const context = canvas.getContext('2d');
          canvas.height = viewport.height;
          canvas.width = viewport.width;

          await page.render({
            canvasContext: context,
            viewport,
          }).promise;
        });
      });
    },
  },
};
</script>

使用 vue-pdf 插件

vue-pdf 是对 pdf.js 的 Vue 封装,简化了集成过程。

安装依赖:

npm install vue-pdf

组件实现:

<template>
  <pdf src="/path/to/file.pdf" :page="currentPage"></pdf>
</template>

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

export default {
  components: { pdf },
  data() {
    return {
      currentPage: 1,
    };
  },
};
</script>

使用 iframe 嵌入

适合需要简单预览且不依赖第三方库的场景。

vue实现pdf预览

<template>
  <iframe src="/path/to/file.pdf" width="100%" height="600px"></iframe>
</template>

注意事项

  • pdf.js 需要处理跨域问题,确保 PDF 文件允许跨域访问。
  • 大文件需考虑分页加载优化性能。
  • 移动端需调整视口缩放比例。

以上方法可根据项目需求选择,pdf.js 提供最灵活的定制能力,vue-pdf 适合快速集成,iframe 则适合简单场景。

标签: vuepdf
分享给朋友:

相关文章

实现 vue ssr

实现 vue ssr

Vue SSR 实现方法 Vue SSR(Server-Side Rendering)通过服务器端渲染 Vue 应用,提升首屏加载速度和 SEO 友好性。以下是核心实现方法: 基础配置 安装必要依赖…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…

vue实现addclass

vue实现addclass

Vue 实现动态添加 class 的方法 在 Vue 中动态添加 class 可以通过多种方式实现,以下是常见的几种方法: 使用对象语法 通过绑定一个对象到 :class,可以动态切换 class…

vue实现甘特图

vue实现甘特图

使用 Vue 实现甘特图 基于开源库(如 vue-ganttastic) 安装依赖库: npm install vue-ganttastic 示例代码: <template> &l…

vue 实现vshow

vue 实现vshow

Vue 实现 v-show 在 Vue 中,v-show 是一个常用的指令,用于根据条件控制元素的显示或隐藏。与 v-if 不同,v-show 不会移除 DOM 元素,而是通过 CSS 的 displ…

vue滑块实现

vue滑块实现

Vue滑块实现方法 使用原生HTML5 range input Vue中可以绑定原生HTML5的range类型input元素实现基础滑块功能: <template> <div&…