当前位置:首页 > 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 倍

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

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

注意事项

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

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

vue利用pdfjs实现预览

标签: vuepdfjs
分享给朋友:

相关文章

vue无限菜单怎么实现

vue无限菜单怎么实现

实现 Vue 无限菜单的方法 递归组件实现嵌套菜单 使用 Vue 的递归组件特性可以轻松实现无限级嵌套菜单。通过组件调用自身的方式处理嵌套数据。 <template> <ul…

vue实现过滤

vue实现过滤

Vue实现过滤的方法 在Vue中实现数据过滤可以通过多种方式完成,以下是几种常见的方法: 使用计算属性过滤 计算属性是Vue中处理数据过滤的理想选择,它们基于响应式依赖进行缓存,只有在相关依赖发生…

简单实现vue

简单实现vue

Vue 的基本实现 创建一个简单的 Vue 应用需要引入 Vue 库,并编写基本的模板和数据绑定逻辑。 <!DOCTYPE html> <html lang="en"> &…

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理…

vue实现粘贴

vue实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见的实现方式: 监听原生粘贴事件 通过 @paste 指令或原生 addEventListen…

vue computed实现

vue computed实现

计算属性的基本用法 在Vue中,计算属性通过computed选项定义,用于声明依赖于其他属性的动态值。计算属性基于它们的依赖进行缓存,只有依赖发生变化时才会重新计算。 new Vue({ dat…