当前位置:首页 > 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 文件。

示例代码:

<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 或在线服务。

前端vue实现pdf预览

标签: vuepdf
分享给朋友:

相关文章

vue实现多级弹窗

vue实现多级弹窗

Vue 多级弹窗实现方法 方法一:使用动态组件与递归组件 在 Vue 中可以通过动态组件配合递归组件实现多级弹窗。定义一个基础弹窗组件,通过递归调用自身实现层级嵌套。 基础弹窗组件模板示例: &…

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="we…

用vue实现滑动输入条

用vue实现滑动输入条

使用 Vue 实现滑动输入条 使用原生 HTML5 input range 实现 在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:…

vue实现边框

vue实现边框

Vue 实现边框的方法 在 Vue 中实现边框效果可以通过多种方式完成,包括内联样式、CSS 类绑定、动态样式以及使用第三方 UI 库。以下是几种常见的实现方法。 内联样式绑定 使用 Vue 的 :…

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…