解析二进制的文件流实现在线预览word

场景:解析接口返回的文件流,实现word预览

解决:
1、通过Blob解析二进制文件流
2、FileReader 接口提供的 readAsArrayBuffer() 方法读取指定的 Blob
3、通过mammoth将读取文件的数据转换为html
4、用vue渲染该html
见文档
mammoth.js, 将Word文档(. docx 文件) 转换为 HTML
FileReader

知识:
mammoth.convertToHtml(input, options)将源文档转换为 HTML。
input: 描述源文档的对象。 在 node.js 上,支持以下输入:
{path: path},其中 path 是. docx 文件的路径。
{buffer: buffer},其中 buffer 是包含. docx 文件的node.js 缓冲区。
在浏览器中,支持以下输入:
{arrayBuffer: arrayBuffer},其中 arrayBuffer 是包含. docx 文件的array 缓冲区。
options ( 可选): 转换的选项。
浏览器表示支持arrayBuffer
转换也仅仅支持docx

示例:

npm install --save mammoth
<template>
    <div>
          <div v-html="vHtml" />
    </div>
</template>
<script>
import mammoth from 'mammoth'
export default {
    data(){
        return: {
            vHtml: '',
        }
    },
	methods: {
	    wordPreview() {
			const that = this
			this.exportFileApi('Employee/ExportEmployeeInfo').then(response => {
				const content = response
				const blob = new Blob([content], {
					type: "application/octet-stream"
				})
				var reader = new FileReader()
				reader.readAsArrayBuffer(blob)
				reader.onload = function(e) {
					const buffer = e.target.result // 此时是arraybuffer类型
					mammoth.convertToHtml({ arrayBuffer: buffer }).then((result) => {
						this.vHtml = result.value
					}).done()
				}
			})
	    }
	}
}
</script>
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值