这可能是最简单的docx、pdf、excel文件预览vue组件库

项目的由来

最近项目中需要实现pdf和docx文件的预览功能,本来想着这应该是非常常见的需求,应该有很多现成的简单方案可用,搜索了一圈发现,虽然有很多方案,但是用起来有一些问题:

  • 预览的效果参差不齐,有的预览效果很好,有的预览缺少对样式的支持
  • 使用复杂,本来想着只要传一个文件地址就能预览,结果发现还要写很多细节代码
  • 每种文件都有很多方案需要去选择,比如docx、pdf、excel等,每个文件都有大量的第三方库,需要去甄别测试

都2023年了,怎么文件预览还这么难!

发现了问题之后,就想着能不能实现一个简单的VUE组件库,能够解决以上问题,让新手前端,能够非常高效的完成文件预览任务。

于是,我期望开发一个vue-office组件库,它必须满足以下3个要求

  • 使用一定要简单,对新手要友好,即传递一个文件地址,就可实现预览
  • 提供多种文件的一站式预览解决方案,解决常见的docx、excel、pdf三种文件的预览
  • 预览效果也好,不只是对内容预览,也要支持样式

要求明确了,实现就相对简单了,从github上筛选每个文档最优的预览方案,然后封装成VUE组件,但是坑还是非常多的,文章最后一部分介绍。

使用

查看demo演示

github源码

安装

有三个组件,可以分别根据需要进行安装

//docx文档预览组件
npm install @vue-office/docx

//excel文档预览组件
npm install @vue-office/excel

//pdf文档预览组件
npm install @vue-office/pdf

使用示例

docx文档的预览



excel文档预览



pdf文档预览



存在的问题

最开始期望发布一个npm包,但是由于多种文件预览要引入很多第三方库,导致最后的npm包超过了2M,无法进行发包,
所以最后拆成了三个包,放到一个命名空间下 @vue-office,这种方式发包,需要在npm官网创建一个组织,创建组织是免费的,只要给个名称就行,也不需要资质审核。

拆包之后就又面临一个问题,如何进行多个包的管理呢,我们经常会看到很多源码里面都有个packages的目录,要发布的包都在packages下,然后通过lerna来管理多个包的build和publish。

最严重的问题就是预览的样式问题,目前大部分的方案都只支持对内容的预览,但是不支持样式的预览,比如可以预览excel文件中的内容,但是像背景色、颜色、字体大小等都不支持,目前我支持了部分样式,这块仍需后面继续完善。

如果你也感兴趣,欢迎一起贡献代码或者提供好的方案,期待大佬们给个赞支持一下~~

最大的感受就是,做一个可用的库,真不容易,要做好真难,需要大量的精力投入。

github源码

你可能感兴趣的:(这可能是最简单的docx、pdf、excel文件预览vue组件库)