当前位置:首页 > VUE

vue实现pdf浏览

2026-01-17 13:00:41VUE

Vue 中实现 PDF 浏览的方法

使用 pdf.js

pdf.js 是 Mozilla 开发的开源库,可直接在浏览器中渲染 PDF 文件。安装依赖:

npm install pdfjs-dist

示例代码:

vue实现pdf浏览

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

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

export default {
  props: {
    pdfUrl: String,
  },
  mounted() {
    this.loadPdf();
  },
  methods: {
    async loadPdf() {
      const loadingTask = pdfjsLib.getDocument(this.pdfUrl);
      const pdf = await loadingTask.promise;
      const page = await pdf.getPage(1);
      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;

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

使用 vue-pdf 插件

vue-pdf 是对 pdf.js 的封装,简化了集成步骤。安装依赖:

npm install vue-pdf

示例代码:

vue实现pdf浏览

<template>
  <pdf :src="pdfUrl" style="width: 100%;"></pdf>
</template>

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

export default {
  components: { pdf },
  data() {
    return {
      pdfUrl: '/example.pdf',
    };
  },
};
</script>

使用 iframe 嵌入

适用于简单的 PDF 展示,无需额外依赖:

<template>
  <iframe :src="pdfUrl" width="100%" height="600px"></iframe>
</template>

<script>
export default {
  data() {
    return {
      pdfUrl: '/example.pdf',
    };
  },
};
</script>

使用第三方服务

通过 Google Docs 或其他在线服务嵌入:

<template>
  <iframe 
    :src="'https://docs.google.com/viewer?url=' + encodeURIComponent(pdfUrl) + '&embedded=true'"
    width="100%"
    height="600px"
    frameborder="0"
  ></iframe>
</template>

注意事项

  • 跨域问题:若 PDF 文件位于其他域名,需确保服务器配置 CORS。
  • 性能优化:大文件可分页加载,避免一次性渲染所有页面。
  • 移动端适配:根据屏幕尺寸动态调整 scale 参数或容器大小。

以上方法可根据项目需求选择,pdf.js 适合高度定制化场景,vue-pdf 适合快速集成,iframe 适合简单嵌入。

标签: vuepdf
分享给朋友:

相关文章

vue实现组件循环

vue实现组件循环

Vue 组件循环的实现方法 在 Vue 中实现组件循环通常使用 v-for 指令,可以循环渲染数组或对象的数据到组件上。 基本数组循环 通过 v-for 指令遍历数组,渲染多个相同结构的组件。…

vue实现购物按钮

vue实现购物按钮

Vue 购物按钮实现方法 基础按钮实现 使用 Vue 的模板语法创建基础按钮组件,绑定点击事件处理购物逻辑: <template> <button @click="addTo…

vue实现好评弹框

vue实现好评弹框

Vue 实现好评弹框的方法 使用 Vue 实现好评弹框可以通过组件化方式完成,结合动态数据绑定和事件处理。以下是具体实现步骤: 1. 创建弹框组件 新建一个 RatingDialog.vue…

vue实现滚动截屏

vue实现滚动截屏

实现滚动截屏的基本思路 滚动截屏通常指对超出可视区域的长页面进行完整截图。在Vue中,可以通过结合DOM操作、Canvas绘制及第三方库实现。以下是具体方法: 使用html2canvas库实现 安装…

在线脑图 vue 实现

在线脑图 vue 实现

在线脑图 Vue 实现方案 使用开源库实现 推荐使用 mind-elixir 或 jsmind 这类开源库,它们专为脑图设计且支持 Vue 集成。 安装依赖: npm install mind…

vue 实现简单登陆

vue 实现简单登陆

以下是一个使用 Vue 3 实现的简单登录功能示例,包含表单验证和基础交互逻辑: 创建 Vue 组件 <template> <div class="login-containe…