记录前端预览word文档的需求实现

方案一:XDOC文档预览

可以使用XDOC文档预览云服务来进行word文件的在线预览,直接去网站体验就知道怎么用了。
https://view.xdocin.com/

使用方法

https://view.xdocin.com/view?src=你的文档地址

例如:https://view.xdocin.com/view?src=https%3A%2F%2Fview.xdocin.com%2Fdemo%2Fview.docx

优点:

  1. 实现简单,只需要将文件地址拼在url参数中即可,且在页面会生成对应的目录结构。
  2. 文档地址也可以是IP地址。

缺点:

  1. 缺少了首行缩进、页面间距等效果
  2. 文档地址必须是对外可访问的,内网则无法使用该方案

方案二:使用微软官方提供的在线预览工具(限制较多,不推荐)

使用方法:

https://view.officeapps.live.com/op/view.aspx?src=你的文件的地址

优点:无

缺点:

  1. 文件的地址只能是域名,且不能包含端口号
  2. 与XDOC文档预览一样文档地址必须是对外可访问的,内网无法使用该方案

方案三:使用docx-preview插件预览docx后缀文件

使用方法

<template><div class="home"><a-button @click="goPreview">点击预览word文件</a-button><div class="docWrap"><!-- 预览文件的地方(用于渲染) --><div ref="file"></div></div></div>
</template>
<script>
import axios from 'axios';
// 引入docx-preview插件
let docx = require('docx-preview');
export default {data() {return {fileLink: 'http://ashuai.work:10000/getDoc'}},mounted() {console.log('使用插件的renderAsync方法来渲染', docx) //},methods: {// 预览goPreview() {axios({method: 'get',responseType: 'blob', // 因为是流文件,所以要指定blob类型url: this.fileLink // 一个word下载文件的接口}).then(({ data }) => {console.log(data) // 后端返回的是流文件/*** 第一个参数: data为文件流,Blob | ArrayBuffer | Uint8Array 格式* 第二个参数: 渲染到页面的dom元素* 第三个参数: 渲染word文档的样式的元素,如果为null,则设置到第二个参数的DOM上* 第四个参数: 配置对象*/docx.renderAsync(data, this.$refs.file, null, {className: 'text-docx', //class name/prefix for default and document style classesinWrapper: true, //enables rendering of wrapper around document contentignoreWidth: false, //disables rendering width of pageignoreHeight: false, //disables rendering height of pageignoreFonts: false, //disables fonts renderingbreakPages: true, //enables page breaking on page breaksignoreLastRenderedPageBreak: true, //disables page breaking on lastRenderedPageBreak elementsexperimental: true, //enables experimental features (tab stops calculation)trimXmlDeclaration: true, //if true, xml declaration will be removed from xml documents before parsinguseBase64URL: false, //if true, images, fonts, etc. will be converted to base 64 URL, otherwise URL.createObjectURL is useduseMathMLPolyfill: true, //includes MathML polyfills for chrome, edge, etc.debug: false //enables additional logging}) // 渲染到页面})}}
}</script>
<style lang="less" scoped>
.home {height: 100%;overflow: auto;
}
.docWrap {// 指定样式宽度width: 900px;overflow: auto;
}
</style>
<style>
.text-docx-wrapper {background: #fff !important;
}
</style>

可以在以下网址上传word文档体验预览:
https://volodymyrbaydalka.github.io/docxjs/

优点:

  1. 样式与word打开基本一直,不会像XDOC文档预览一样没有了首行缩进
  2. 接口返回文件流即可预览,内网也可以实现

缺点:

  1. 只能预览后缀为.docx的word文档,无法预览后缀为.doc的文档(如果实在要预览doc文件,可以考虑让后端复制源文件转成docx类型后返回前端文件流即可)
  2. 无法像XDOC文档预览一样生成对应的目录

前端预览word文档实现相关推荐

  1. 在线预览word文档

    在线预览word文档 在线预览word文档 Java 使用wps将word文件转换pdf文件 转成PDF 在线预览word(转成pdf)前端展示 欢迎来提更好的意见 在线预览word文档 昨天下午组长 ...

  2. Springboot 超简单实现在线预览,Word文档 doc、xlsx、pdf、txt等

    前言 PDF.TXT 只要资源可访问,根本就不需要进行任何处理,直接访问查看就完事了. 也是因为这个PDF可以直接查看(现在浏览器基本支持了),那么我们实现Word文档在线预览,其实也是 把WORD文 ...

  3. 移动端h5页面预览word文档

    在web端预览word文档,可以使用iframe来实现.但由于兼容性问题,并不能使用iframe在安卓和ios上预览文件 经测试发现,mammoth插件可以实现该功能 <!DOCTYPE htm ...

  4. java 预览word文档_Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  5. vue实现预览word文档(处理文档流)

    效果图如下: 1.需要用到插件 npm i docx-preview --save 页面实现预览主要依靠插件,所以这是最重要的一步,如果你用的cnpm包管理器,那就是命令行 cnpm i docx-p ...

  6. 调用office web 365接口实现在线预览word文档,PDF,PPT

    我项目中是直接用iframe显示: <iframe id="iframe_src"  scrolling="auto"  width="100% ...

  7. java poi预览word文档_apache poi操作office文档----java在线预览txt、word、ppt、execel,pdf代码...

    在页面上显示各种文档中的内容.在servlet中的逻辑 word: BufferedInputStream bis = null; URL url = null; HttpURLConnection ...

  8. kkfileview在预览word文档中文乱码

    因为liunx服务器没有相关中文字体 1.下载中文字体包 http://kkfileview.keking.cn/fonts.zip 2.上传服务器至目录/usr/share/fonts 解压 unz ...

  9. web项目 在线预览doc文档

    在线预览word文档 前端代码 后台controller代码(使用Aspose.Words) 前端代码 在前端发送ajax请求,并展示后端生成的html临时文件 showFile:function(m ...

最新文章

  1. java输出流flush操作
  2. SAP 如何从表中区分内外向交货单
  3. unity3D 4.6及以上版本. UI穿透问题,以及模拟器不穿透真机穿透问题解决方案
  4. java-number
  5. jh锂电保护电路_一文弄懂,锂电池的充电电路,以及它的保护电路方案设计
  6. 一个算例 介绍 libmesh 的类
  7. 微软商店点下载没反应
  8. kubernetes核心组件的运行机制
  9. 书法教室及数字化音乐教室建设方案
  10. unity mmd不支持android,MMD模型导入Unity的解决方案
  11. 分数阶灰色模型的python实现
  12. 基于二维激光雷达的三维激光扫描系统的设计与实现
  13. 心上莲花:佛教简介(上)
  14. 筚路蓝缕,以启山林 | 做RPA行业的坚守者与创新者——数据猿专访云扩科技CTO史秋芳
  15. java操作RabbitMQ
  16. 传真服务器的常见问题处理
  17. 可编程交换机P4网络资源
  18. isalpha()函数
  19. 挂载zookeeper到文件系统 (mount zookeeper)
  20. Python 经典面试题汇总之框架篇

热门文章

  1. 全球与中国1,2,4-三氟苯市场深度研究分析报告
  2. JS获取滚动条到底部得距离
  3. 2017年最新黑马Python2017年就业班不加密视频教程
  4. 中山纪中集训Day2又是测试
  5. 手机这些隐藏的功能你了解吗?
  6. 【正点原子FPGA连载】第四十九章OV5640摄像头HDMI灰度显示实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1
  7. Raspberry Pi 4 Model B(4G RAM)WIndows 10 安装(SD挂载USB驱动)
  8. CRM 开发 - 权限组件/stark组件/CRM业务
  9. [luogu]P4365[九省联考]秘密袭击coat(非官方正解)
  10. 个人对于SAR的粗浅理解