当前位置:首页 > VUE

vue利用pdfjs实现预览

2026-02-24 19:23:22VUE

使用 PDF.js 在 Vue 中实现 PDF 预览

安装依赖 确保项目中已安装 pdfjs-dist,可通过以下命令安装:

npm install pdfjs-dist

引入 PDF.js 在 Vue 组件中引入 PDF.js 的核心库和 worker 文件:

import * as pdfjsLib from 'pdfjs-dist';
import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.min';
pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker;

创建 PDF 渲染组件 在 Vue 模板中添加一个用于渲染 PDF 的容器:

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

加载并渲染 PDFmethods 中定义加载和渲染 PDF 的方法:

methods: {
  async loadPDF(url) {
    const loadingTask = pdfjsLib.getDocument(url);
    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;

    const renderContext = {
      canvasContext: context,
      viewport: viewport
    };
    await page.render(renderContext).promise;
  }
}

调用方法mounted 钩子或事件触发时调用 loadPDF

mounted() {
  this.loadPDF('https://example.com/document.pdf');
}

优化与扩展功能

多页渲染 通过循环加载多页内容,动态创建多个 canvas 元素:

async loadAllPages(url) {
  const pdf = await pdfjsLib.getDocument(url).promise;
  for (let i = 1; i <= pdf.numPages; i++) {
    const page = await pdf.getPage(i);
    // 动态创建 canvas 并渲染
  }
}

缩放控制 添加缩放功能,调整 scale 参数:

const viewport = page.getViewport({ scale: 2.0 }); // 放大 2 倍

错误处理 捕获加载过程中的异常:

vue利用pdfjs实现预览

try {
  await this.loadPDF(url);
} catch (error) {
  console.error('PDF加载失败:', error);
}

注意事项

  • PDF.js 的 worker 文件需正确配置路径,否则可能报错。
  • 跨域 PDF 文件需确保服务器允许 CORS。
  • 大文件加载时建议分页渲染,避免性能问题。

通过以上步骤,可在 Vue 中实现基础 PDF 预览功能,并根据需求扩展交互特性。

标签: vuepdfjs
分享给朋友:

相关文章

vue实现图集

vue实现图集

Vue 实现图集的方法 在 Vue 中实现图集功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用第三方库(如 vue-image-lightbox) 安装 vue-image-ligh…

django vue实现

django vue实现

Django与Vue.js整合实现方案 Django作为后端框架与Vue.js作为前端框架的整合,可以通过以下方式实现: 分离式开发 前后端完全分离,Django仅提供API接口,Vue.js通过a…

vue能实现

vue能实现

Vue.js 是一个流行的前端框架,能够实现多种功能。以下是 Vue 能够实现的主要功能和特性: 响应式数据绑定 Vue 的核心特性之一是响应式数据绑定。通过数据驱动视图,当数据发生变化时,视图会自…

vue底层实现

vue底层实现

Vue.js 的底层实现原理 Vue.js 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现细节: 响应式系统 Vue 2…

vue 实现上传

vue 实现上传

Vue 实现文件上传 使用 Vue 实现文件上传可以通过原生 HTML 的 <input type="file"> 或第三方库(如 axios、vue-upload-component)完…

vue实现CRUD

vue实现CRUD

Vue 实现 CRUD 操作 Vue 提供了响应式数据绑定和组件化开发能力,结合后端 API 可以轻松实现 CRUD(增删改查)功能。以下是基于 Vue 3 和 Axios 的完整实现方案。 安装依…