当前位置:首页 > 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 实现在线预览的常见方法 使用 iframe 嵌入 通过 iframe 标签可以嵌入多种类型的文件,如 PDF、图片、网页等。需要确保文件地址可访问。 <template> &…

vue实现一个tab栏

vue实现一个tab栏

Vue 实现 Tab 栏 基础实现(选项式 API) <template> <div class="tab-container"> <div class="t…

vue实现素材

vue实现素材

Vue 实现素材的方法 使用 Vue 组件管理素材 在 Vue 项目中,可以通过组件化的方式管理素材。创建一个专门的组件来加载和显示素材,例如图片、视频或音频文件。组件可以接收素材的路径或 URL 作…

vue 实现回复

vue 实现回复

Vue 实现回复功能 在 Vue 中实现回复功能通常涉及表单提交、数据绑定和列表渲染。以下是实现步骤和代码示例: 数据绑定与表单 <template> <div>…

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…

vue实现答题

vue实现答题

Vue 实现答题功能 数据结构设计 使用 Vue 的响应式特性管理题目和答案数据。通常需要以下数据结构: data() { return { questions: [ {…