vue中使用docx-preview插件预览word文档(后端express)

问题描述

本文记录了一下预览word文档的功能。需要用到:

  • 前端:vue
  • 后端:express
  • 插件:docx-preview

思路分析

  1. 后端express代码中读取文件夹中的 .docx 类型文件
  2. 然后将其以可读流的方式返回给前端一个blob流文件
  3. 后端返回的流文件前端收到以后,执行docx-preview插件的renderAsync方法即可渲染出预览的效果

注意,vue项目要先下载插件哦

cnpm i docx-preview --save

<template>
  <div>
    <el-button @click="goPreview">点击预览word文件</el-button>
    <el-button @click="downLoad">点击下载word文件</el-button>
    <div class="docWrap">
      <!-- 预览文件的地方(用于渲染) -->
      <div ref="file"></div>
    </div>
  </div>
</template>

<script>
// 引入axios用来发请求
import axios from "axios";
// 引入docx-preview插件
let docx = require("docx-preview");
export default {
  mounted() {
    console.log("使用插件的renderAsync方法来渲染", docx); //
  },
  methods: {
    // 预览
    goPreview() {
      axios({
        method: "get",
        responseType: "blob", // 因为是流文件,所以要指定blob类型
        url: "http://ashuai.work:10000/getDoc", // 自己的服务器,提供的一个word下载文件接口
      }).then(({ data }) => {
        console.log(data); // 后端返回的是流文件
        docx.renderAsync(data, this.$refs.file); // 渲染到页面
      });
    },
    // 下载
    downLoad() {
      axios({
        method: "get",
        responseType: "blob", // 因为是流文件,所以要指定blob类型
        url: "http://ashuai.work:10000/getDoc", // 自己的服务器,提供的一个word下载文件接口
      }).then(({ data }) => {
        console.log(data); // 后端返回的是流文件
        const blob = new Blob([data]); // 把得到的结果用流对象转一下
        var a = document.createElement("a"); //创建一个<a></a>标签
        a.href = URL.createObjectURL(blob); // 将流文件写入a标签的href属性值
        a.download = "出师表.docx"; //设置文件名
        a.style.display = "none"; // 障眼法藏起来a标签
        document.body.appendChild(a); // 将a标签追加到文档对象中
        a.click(); // 模拟点击了a标签,会触发a标签的href的读取,浏览器就会自动下载了
        a.remove(); // 一次性的,用完就删除a标签
      });
    },
  },
};
</script>
<style lang="less" scoped>
.docWrap {
  // 指定样式宽度
  width: 900px;
  overflow-x: auto;
}
</style>

原文地址: https://juejin.cn/post/7033962262494707749

### DeepSeek集成Word文档编辑器API或SDK支持.docx格式在线编辑 #### 集成方案概述 为了使DeepSeek平台具备处理和编辑`.docx`格式的能力,可以考虑采用第三方库和服务来增强这一功能。具体来说,Apache POI是一个强大的Java库,专门用于操作Microsoft Office文件,包括Excel、PowerPoint以及Word文档[^2]。 对于Web应用而言,在前端部分可以通过Vue.js插件如`vue-docx-editor`或者`docx-preview`提供直观的用户界面来进行基本的文字处理工作;而后端则负责保存最终版本至服务器,并通过RESTful API接口与客户端交互数据[^4]。 #### 技术选型建议 - **前后端分离架构**:利用现代JavaScript框架(如React/Vue/Angular)构建富互联网应用程序(Frontend),并通过HTTP请求调用部署于云服务上的微服务(Backend)完成实际业务逻辑运算。 - **选择合适的工具链** - 前端展示层推荐使用基于浏览器环境运行良好的开源组件,比如上述提到过的`vue-docx-editor`,它允许开发者轻松嵌入到现有的单页面应用(SPA)之中; - 后端开发方面除了继续沿用成熟的Spring Boot/Spring Cloud生态体系外,也可以探索其他轻量级解决方案例如Node.js Express/Koa配合TypeScript编写更加简洁高效的代码结构; - 数据持久化环节考虑到性能因素可以选择NoSQL数据库MongoDB存储非关系型的数据模型,而传统的关系型数据库MySQL/PostgreSQL更适合用来管理元数据记录表项之间的关联关系。 #### 关键技术点分析 - **上传下载流媒体资源**:当涉及到大型二进制对象(BLOBs)传输时务必关注网络带宽占用情况以及可能引发的安全隐患问题。因此有必要引入CDN加速分发机制降低源站压力的同时提高访问速度体验感。 - **实时协作编辑特性实现**:多人同时在线协同办公场景下确保每位参与者看到一致视图至关重要。这通常依赖WebSocket协议建立全双工通信信道以便即时推送更新事件通知给所有连接着的服务实例。 ```javascript // WebSocket 连接示例 const socket = new WebSocket('ws://localhost:8080'); socket.onmessage = function(event){ console.log(`Received message from server:${event.data}`); }; ``` - **兼容性测试覆盖范围广泛**:由于不同操作系统平台上安装有各种版本号不一的应用程序软件包,所以在正式发布前应该尽可能多地模拟真实用户的设备环境进行全面的功能性和稳定性验证过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值