当前位置:首页 > VUE

前端vue实现docpdf预览

2026-02-24 21:22:53VUE

Vue 实现 DOC/PDF 预览的方法

使用 PDF.js 预览 PDF

安装 pdf.js 库,通过 <canvas> 渲染 PDF 内容。需将 PDF 文件转换为二进制数据流或直接引用 URL。

// 安装依赖
npm install pdfjs-dist

// 组件示例
<template>
  <div>
    <canvas ref="pdfCanvas"></canvas>
  </div>
</template>

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

export default {
  props: ['pdfUrl'],
  mounted() {
    this.loadPDF(this.pdfUrl);
  },
  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.width = viewport.width;
      canvas.height = viewport.height;
      await page.render({
        canvasContext: context,
        viewport: viewport
      }).promise;
    }
  }
};
</script>

使用 iframe 嵌入 Office 在线预览

通过 Microsoft Office Online 或 Google Docs 的嵌入功能实现 DOC 预览。需将文件转换为公开可访问的 URL。

<iframe 
  :src="`https://view.officeapps.live.com/op/embed.aspx?src=${encodeURIComponent(docUrl)}`"
  width="100%" 
  height="500px"
  frameborder="0">
</iframe>

使用第三方库 vue-pdf-embed

对于快速集成,可使用封装好的 Vue 组件库如 vue-pdf-embed

npm install vue-pdf-embed

<template>
  <vue-pdf-embed :source="pdfSource" />
</template>

<script>
import VuePdfEmbed from 'vue-pdf-embed';
export default {
  components: { VuePdfEmbed },
  data() {
    return { pdfSource: '/example.pdf' };
  }
};
</script>

使用 mammoth.js 解析 DOCX

对于 DOCX 文件,可通过 mammoth.js 转换为 HTML 后渲染。

前端vue实现docpdf预览

npm install mammoth

<template>
  <div v-html="docxContent"></div>
</template>

<script>
import * as mammoth from 'mammoth';
export default {
  data() {
    return { docxContent: '' };
  },
  async mounted() {
    const response = await fetch('/document.docx');
    const arrayBuffer = await response.arrayBuffer();
    const result = await mammoth.extractRawText({ arrayBuffer });
    this.docxContent = result.value;
  }
};
</script>

注意事项

  • PDF.js 需处理跨域问题,本地开发时可能需要配置代理。
  • Office 在线预览要求文件 URL 为公网可访问地址。
  • DOCX 解析仅支持新版 Office 格式(.docx),旧版 .doc 需转换或使用其他工具。
  • 大文件需考虑分页加载或懒加载优化性能。

标签: vuedocpdf
分享给朋友:

相关文章

vue自己实现下拉导航

vue自己实现下拉导航

实现下拉导航的基本思路 在Vue中实现下拉导航,可以通过结合Vue的响应式数据和事件绑定特性来完成。主要思路是利用v-show或v-if控制下拉菜单的显示与隐藏,并通过鼠标事件或点击事件触发状态变化。…

vue实现编辑

vue实现编辑

Vue 实现编辑功能 在 Vue 中实现编辑功能通常涉及表单绑定、状态管理和事件处理。以下是一个常见的实现方法: 双向数据绑定 使用 v-model 指令实现表单元素与数据的双向绑定: <i…

vue 实现评分

vue 实现评分

Vue 实现评分功能 在 Vue 中实现评分功能可以通过多种方式完成,包括使用第三方组件库或自定义实现。以下是两种常见的方法: 使用第三方组件库(如 Element UI) Element UI 提…

vue实现翻页

vue实现翻页

Vue实现翻页功能 在Vue中实现翻页功能通常需要结合分页组件和数据请求逻辑。以下是常见的实现方法: 使用Element UI分页组件 安装Element UI后,可以直接使用其分页组件: <…

vue实现slidedown

vue实现slidedown

Vue 实现 SlideDown 动画效果 在 Vue 中实现 SlideDown 效果可以通过 CSS 过渡或动画结合 Vue 的过渡系统完成。以下是几种常见方法: 使用 Vue Transiti…

vue打包实现推送

vue打包实现推送

Vue 项目打包与自动化部署推送 打包 Vue 项目 使用以下命令生成生产环境代码,默认输出到 dist 目录: npm run build 配置自动化推送(以 GitHub Pages 为例)…