当前位置:首页 > VUE

vue实现word在线预览

2026-02-20 23:39:58VUE

Vue 实现 Word 文档在线预览

使用 mammoth.js 解析 .docx 文件

mammoth.js 是一个浏览器端的库,可将 .docx 文件转换为 HTML,适合预览文档内容。

安装依赖:

npm install mammoth

示例代码:

<template>
  <div>
    <input type="file" @change="handleFileUpload" accept=".docx" />
    <div v-html="previewContent"></div>
  </div>
</template>

<script>
import * as mammoth from "mammoth";

export default {
  data() {
    return {
      previewContent: ""
    };
  },
  methods: {
    handleFileUpload(e) {
      const file = e.target.files[0];
      const reader = new FileReader();
      reader.onload = (event) => {
        mammoth.extractRawText({ arrayBuffer: event.target.result })
          .then(result => {
            this.previewContent = result.value;
          });
      };
      reader.readAsArrayBuffer(file);
    }
  }
};
</script>

使用 docx-preview

docx-preview 提供更接近原生 Word 的渲染效果,支持样式保留。

安装依赖:

npm install docx-preview

示例代码:

<template>
  <div>
    <input type="file" @change="renderDocx" accept=".docx" />
    <div ref="docxContainer"></div>
  </div>
</template>

<script>
import { renderAsync } from "docx-preview";

export default {
  methods: {
    renderDocx(e) {
      const file = e.target.files[0];
      const container = this.$refs.docxContainer;
      renderAsync(file, container)
        .catch(err => console.error("渲染失败:", err));
    }
  }
};
</script>

通过后端服务转换

若需支持旧版 .doc 文件或复杂格式,可通过后端转换(如 LibreOffice 或 API 服务)返回 HTML/PDF。

前端调用示例:

<template>
  <div>
    <input type="file" @change="uploadFile" />
    <iframe v-if="previewUrl" :src="previewUrl" width="100%" height="500px"></iframe>
  </div>
</template>

<script>
export default {
  data() {
    return {
      previewUrl: ""
    };
  },
  methods: {
    async uploadFile(e) {
      const formData = new FormData();
      formData.append("file", e.target.files[0]);
      const response = await fetch("/api/convert", {
        method: "POST",
        body: formData
      });
      const { url } = await response.json();
      this.previewUrl = url;
    }
  }
};
</script>

使用微软 Office Online 嵌入

通过嵌入 Office Online 实现原生预览(需公网可访问的文件 URL):

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

注意事项

  • 直接解析 .docx 的方案可能丢失部分复杂格式。
  • 大文件建议分片上传或使用后端转换。
  • 敏感文档需自行部署转换服务,避免第三方 API 泄漏数据。

vue实现word在线预览

标签: 在线vue
分享给朋友:

相关文章

vue实现旋转

vue实现旋转

Vue 实现旋转效果的方法 在 Vue 中实现旋转效果可以通过多种方式完成,以下是几种常见的方法: 使用 CSS 动画 通过 Vue 的 :class 或 :style 绑定 CSS 动画实现旋转效…

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascader…

vue实现拍照

vue实现拍照

Vue实现拍照功能 在Vue中实现拍照功能通常需要结合浏览器的MediaDevices API和Canvas元素。以下是具体实现方法: 安装依赖(可选) 如果需要更简单的封装,可以安装vue-w…

vue课程实现

vue课程实现

Vue 课程实现方案 课程内容设计 Vue课程应从基础到高级逐步展开,涵盖Vue核心概念、组件化开发、状态管理、路由、构建工具等。基础部分包括Vue实例、模板语法、计算属性和侦听器。中级部分深入组件通…

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── Ka…

vue 实现modal

vue 实现modal

Vue 实现 Modal 的方法 使用 Vue 原生组件 通过 Vue 的组件系统可以轻松实现 Modal。创建一个可复用的 Modal 组件,通过 props 控制显示与隐藏。 <temp…