嗨,大家好,我是小华同学,关注我们获得"最新、最全、最优质"开源项目和高效工作学习方法
vue-office
是一个支持多种文件格式(docx、excel、pdf、pptx)预览的Vue组件库,它不仅支持Vue2和Vue3,还兼容非Vue框架如React等。这个Web-based的库提供了一个全面的解决方案,用于在线预览pdf、excel、word和pptx文档。
功能特色
一站式解决方案
提供word(.docx)、pdf、excel(.xlsx, .xls)、ppt(.pptx)等多种文档的在线预览方案,一个库满足所有需求。
简单易用
只需提供文档的src(网络地址)即可完成文档预览。
良好的用户体验
选择每个文档的最佳预览方案,保证用户体验和性能都达到最佳状态。
性能优化
针对数据量较大的文件进行了优化。
安装
docx文档预览组件
npm install @vue-office/docx vue-demi@0.14.6
excel文档预览组件
npm install @vue-office/excel vue-demi@0.14.6
pdf文档预览组件
npm install @vue-office/pdf vue-demi@0.14.6
pptx文档预览组件
npm install @vue-office/pptx vue-demi@0.14.6
对于Vue2.6版本或以下,还需要额外安装@vue/composition-api
。
npm install @vue/composition-api
使用示例
文档预览场景大致可以分为三种:有文档CDN地址、通过接口请求获取文件内容、文件上传时预览。
1. 使用网络地址预览
docx文件预览示例
<template>
<vue-office-docx
:src="docx"
style="height: 100vh;"
@rendered="rendered"
/>
</template>
<script>
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/docx/lib/index.css'
export default {
components:{
VueOfficeDocx
},
data(){
return {
docx: 'http://static.shanhuxueyuan.com/test6.docx' //设置文档网络地址,可以是相对地址
}
},
methods:{
rendered(){
console.log("渲染完成")
}
}
}
</script>
2. 上传文件预览
读取文件的ArrayBuffer
<template>
<div>
<input type="file" @change="changeHandle"/>
<vue-office-docx :src="src"/>
</div>
</template>
<script>
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/docx/lib/index.css'
export default {
components: {
VueOfficeDocx
},
data(){
return {
src: ''
}
},
methods:{
changeHandle(event){
let file = event.target.files[0]
let fileReader = new FileReader()
fileReader.readAsArrayBuffer(file)
fileReader.onload = () => {
this.src = fileReader.result
}
}
}
}
</script>
3. 二进制文件预览
如果后端给的不是CDN地址,而是一些POST接口,该接口返回二进制流,则可以调用接口获取文件的ArrayBuffer数据,传递给src属性。
<template>
<vue-office-docx
:src="docx"
style="height: 100vh;"
@rendered="rendered"
/>
</template>
<script>
import VueOfficeDocx from '@vue-office/docx'
import '@vue-office/docx/lib/index.css'
export default {
components:{
VueOfficeDocx
},
data(){
return {
docx: ''
}
},
mounted(){
fetch('你的API文件地址', {
method: 'post'
}).then(res=>{
//读取文件的arrayBuffer
res.arrayBuffer().then(res=>{
this.docx = res
})
})
},
methods:{
rendered(){
console.log("渲染完成")
}
}
}
</script>
项目依赖的第三方库
-
docx:基于docx-preview库实现,相关issues暂不处理。
-
pdf:基于pdfjs库实现,实现了虚拟列表增加性能。
-
excel:基于exceljs 和 x-data-spreadsheet实现,全网样式支持更好。
-
pptx :基于自研库 pptx-preview 实现,源码单独付费向作者索取。
项目效果
结语
Vue-office为开发者提供了一种简单、高效的Office文件预览解决方案。无论是Word、Excel、PDF还是PPTX文件,都可以轻松实现预览功能。如果你正在寻找这样的解决方案,Vue-office绝对值得一试。
最后,值得一提的是,市场上还有其他同类项目,但Vue-office以其出色的性能和易用性在开发者中建立了良好的口碑。如果你想了解更多关于Vue-office的信息,或者有其他相关问题,欢迎继续关注我们的后续文章。
项目地址
https://github.com/501351981/vue-office